BioErrorLog Tech Blog

試行錯誤の記録

AWS CLIのhelp結果がgrepできない問題の対処法

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)で開いてみると、制御文字が文字の間に入っていることが見てとれます。

aws help結果をテキストエディタで見てみると、backspace(赤色部分)が文字間に入り込んでいることがわかる

文字間に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できない問題の原因と対処法を記録しました。

どなたかの参考になれば幸いです。

[関連記事]

www.bioerrorlog.work

参考