aws help結果をgrepしようとしても上手くできない問題の対処法です。
はじめに
aws help | grep 'XXX'のように、aws help結果をgrepやsedしようとすると、想定通りに動作しませんでした。
これはaws ec2 helpのようなawsサービスレベルのコマンドのhelpページについても同様です。
この問題の原因と対処法をメモします。
# AWS CLI version $ aws --version aws-cli/2.11.2 Python/3.11.2 Darwin/23.6.0 exe/x86_64 prompt/off
The English translation of this post is here.
AWS CLIのhelp結果がgrepできない問題
原因
AWS CLIのhelpページでは文字の間に制御文字(backspace)が入っていることが、help結果をgrepできない問題原因です。
例えばaws help > log.txtでhelpページをファイル出力しテキストエディタ(VSCode)で開いてみると、制御文字が文字の間に入っていることが見てとれます。

文字間にbackspaceが入り込んでいるため、grepやsedをはじめとしたテキスト処理系のコマンドは上手く動作しません。
対処法
col -bコマンドで制御文字(backspace)を削除してからgrepなどのコマンドを実行すれば、問題なく動作させることができます。
# aws help結果をgrepする例 aws help | col -b | grep 'XXX'
実行例
col -bせずにgrepする例:
$ aws help | grep 'AVA' # 出力なし
何も処理せずに'AVA'という文字をgrepしても、何も検索結果はヒットしていません。
これをcol -bを挟んで実行してみると、
$ aws help | col -b | grep 'AVA' AVAILABLE SERVICES
無事grep結果がヒットしました。
col -bでbackspaceを排除したおかげです。
おわりに
以上、AWS CLIのhelp結果がgrepできない問題の原因と対処法を記録しました。
どなたかの参考になれば幸いです。
[関連記事]