[jq] アウトプットをkey-value形式の連想配列で出力する方法

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

ログファイルやデータファイルからレコードデータを複数取得して、それを配列で返すのは非常に簡単にできますが、これを任意のデータをkeyにして、連想配列で出力するという複雑な処理をやってみたいと思います。
 

どんな時に使うの?

商品IDと商品詳細が追記されていくようなレコードタイプのログで、そのデータから商品IDをkeyとした、データを取得したい場合などで、レコード型データを簡単にHASHデータとして取得が出来るようになります。
 

その後、JavascriptのAjaxで取得した場合は、即座にJSON.parse()すればいいし、PHPの場合であれば、json_decode()してしまえば、テキストレコードデータからのHASH取得が簡単に行えるようになります。
 

from_entriesを使って連想配列化

jqは様々な命令機能を持っているため、リファレンスページを熟読してみると、色々な発見があり、非常に高機能なツールであることが分かります。
 

https://stedolan.github.io/jq/manual/
 

ここに記述されている「from_entries」でkey-value出力ができるという内容が書かれています。
 


 

サンプルで登録されているコードは以下のとおりです。
 

 

サンプルデータを使って実践

 

 

 

かなりシンプルなデータ構造でやったので、簡単に見えるかもしれませんが、key-valueの配列データを出力して”from_entries”でhash化するという内容になっています。
 

valueの値に色々なデータを入れたり、内部をさらに配列や連想配列にすることもできるので、応用パターンは無限大ですね。
 

配列で受け取ることが多いjqコマンドですが、連想配列も慣れると簡単に取得できて、key検索などが非常に高速に行なうことが可能になります。
 

jq使いこなすともはやSQLは不要なのではないかとすら感じるようになってきましたね・・・いいのかな?
 

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です