LoginSignup
6
3

More than 3 years have passed since last update.

AWS CLI でテキスト出力する際に確実に改行させる

Last updated at Posted at 2019-11-06

これはなんですか

  • AWS CLI で --output text 指定するときに出力を改行表示させる方法です。
  • AWS CLI の出力を xargs で渡すときにこけたのでメモとして書きます。

結論

以下例のように --query オプションで [] を使って明示的にリストとして出力すれば良い。

WAFのWebACL一覧を取得する例
$ aws waf list-web-acls --query "WebACLs[*].[WebACLId]" --output text

詳細

たとえばCLIでWAFのWebACL ID一覧を取得することを考える。何も考えずに以下のコマンドを実行すると、IDがタブ区切りで出力される:

タブ区切りになる
$ aws waf list-web-acls --query "WebACLs[*].WebACLId" --output text
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx    xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx    xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx    xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx    xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx    xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx    ...

これを改行区切りで出力するためには、次のようにクエリ内で明示的に [] を使ってリストとして結果を得ればよい。

改行になる
$ aws waf list-web-acls --query "WebACLs[*].[WebACLId]" --output text
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
...

改行なしの出力を xargs に渡す場合は後者の方法を取ると良い。改行なしの場合は -n 1 で逃げられるが、うまく聞かない環境もあるので個人的にはオススメしない。

ちなみに、 --output table とすると、どちらの場合も同じ出力が得られる。

$ aws waf list-web-acls --query "WebACLs[*].WebACLId" --output table
------------------------------------------
|               ListWebACLs              |
+----------------------------------------+
|  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  |
|  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  |
|  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  |
|  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  |
|  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  |
|  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  |
|                 ...                    |
+----------------------------------------+

参考

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3