Docker版awscliの出力(json)をjqでパースしようとしたところ、エラーが発生しました。
検証環境
hoge@fuga:~$ docker --version Docker version 26.1.4, build 5650f9b hoge@fuga:~$ aws --version aws-cli/2.16.6 Python/3.11.8 Linux/6.6.25-01713-g2f237acc8e50 docker/x86_64.amzn.2 hoge@fuga:~$ jq --version jq-1.6
エラー内容
suke@penguin:~$ aws iam list-users | jq '.Users[].UserName' parse error: Invalid numeric literal at line 1, column 2 # 期待値 hoge@fuga:~$ aws iam list-users | jq '.Users[].UserName' "user1" "user2" "user3"
原因及び対処法
原因
原因は、dockerコマンド実行時の't'オプションにより、実行結果に不要な文字が入っていたため。
docker run --rm -it public.ecr.aws/aws-cli/aws-cli command
# 't'オプションありの場合の出力結果 "\u001b[?1h\u001b=\r{\u001b[m\r" " \"Users\": [\u001b[m\r" " {\u001b[m\r" " \"Path\": \"/\",\u001b[m\r" # 't'オプションなしの場合の出力結果 "{" " \"Users\": [" " {" " \"Path\": \"/\","
対処法
dockerコマンドから't'オプションを除く
docker run --rm -i public.ecr.aws/aws-cli/aws-cli command