aws-cliを使い始める人のための、jqコマンド超入門

カテゴリ: Linux | タグ: , ,

AWSのクラウド環境をコマンドラインから操作するために、awsコマンドというものがあります。

検索系のコマンドの場合、jsonで形式で出力させたうえでjqコマンドで必要な情報のみ抽出することが多いのですが、jqコマンドを初めて使う場合、使い方が分からずに戸惑うことも多いです。
そこで、今回はjqコマンドの基本的な使い方を説明します。

サンプルのファイル

今回使うファイルは、非常に簡単な下記のjson.txtファイルを使用します。

more json.txt 
{"key1": 1, "key2": 2}
{"key1": 10, "key2": 20}

入力をそのまま返す

jqコマンドをオプションなしで実行すると、そのまま返されます。
改行などは行われていますが、jsonファイルとしては同じ意味の内容を返してきています。

cat json.txt | jq 
{
  "key1": 1,
  "key2": 2
}
{
  "key1": 10,
  "key2": 20
}

key1だけをhashとして返す

"{}"でキー名を指定すると、指定したキーの情報のみがフィルタリングされて、jsonのハッシュ構造で返されます。

cat json.txt | jq -r '{key1}'
{
  "key1": 1
}
{
  "key1": 10
}

hashではなくarrayとして返す

"{}"ではなく"[]"で括ると、結果が配列で返されます。今回は、key1とkey2を指定しているので、両方が返ってきています。

cat json.txt   | jq -r '[.key1, .key2]'
[
  1,
  2
]
[
  10,
  20
]

jsonではなく、tsvで返す

"("と")"でキーを囲んだうえで全体を、ダブルクオートすると、jsonではなく指定されたフォーマットで返されます。
2つの項目の間に、タブ(\t)を指定しているため、結果的にtsv形式になります。
key1, key2をtab区切りで値だけ返す

cat json.txt | jq -r '"\(.key1)\t\(.key2)"'
1       2
10      20

タブではなく任意の文字を出力させる

先ほどはタブを直接出力しましたが、任意の文字を指定できます。以下のように同じキーを2回指定することも可能です。

cat json.txt | jq -r '"key1は\(.key1)で、key2は\(.key2)です。2回出力もできる\(.key1)"'
key1は1で、key2は2です。2回出力もできる1
key1は10で、key2は20です。2回出力もできる10
こちらもおススメ

コメントを残す

メールアドレスが公開されることはありません。