💨

【jqコマンド】JSONをLinuxで扱うコマンドの使い方

2023/04/21に公開

jqコマンドとは

jqは、JSONデータを操作するためのコマンドラインツールです。JSONは、JavaScript Object Notationの略で、Web APIやデータベースなどで広く使われています。

jqを使うことで、JSONデータをフィルタリング、操作、変換することができます。ここでは、jqコマンドの基本的な使い方について説明します。

jqのインストール

jqは、macOS、Linux、Windowsなどの様々なプラットフォームで利用可能です。

macOS

Homebrewを使ってインストールできます。

brew install jq

Linux

apt-get、yum、dnfなどのパッケージマネージャを使ってインストールできます。

Debian/Ubuntu

sudo apt-get install jq

CentOS/RHEL

sudo yum install epel-release
sudo yum install jq

Windows
Windows用のバイナリファイルをjqの公式サイトからダウンロードしてください。

jqコマンドの基本的な使い方

JSONデータの取得

jqを使ってJSONデータを取得するには、以下のように入力します。

$ cat data.json | jq

catコマンドでJSONデータを表示し、|でjqに渡します。

フィルタリング

jqを使ってJSONデータをフィルタリングするには、selectコマンドを使用します。例えば、nameが"John"の行だけを表示するには、以下のように入力します。

$ cat data.json | jq '.[] | select(.name == "John")'

'.'でJSONデータを指定し、[]で配列要素を取得します。|でフィルタリング条件を指定します。

プロパティの取得

jqを使ってJSONデータからプロパティを取得するには、以下のように入力します。

$ cat data.json | jq '.name'

.nameでnameプロパティを取得します。

プロパティの追加

jqを使ってJSONデータに新しいプロパティを追加するには、以下のように入力します。

$ cat data.json | jq '.[] | .new_property = "new_value"'

.[]で配列要素を指定し、.new_property = "new_value"で新しいプロパティを追加します。

プロパティの変更

jqを使ってJSONデータのプロパティを変更するには、以下のように入力します。

$ cat data.json | jq '.[] | .name = "New Name"'

.[]で配列要素を指定し、.name = "New Name"でnameプロパティを変更します。

プロパティの削除

jqを使ってJSONデータからプロパティを削除するには、以下のように入力します。

$ cat data.json | jq '.[] | del(.property_to_delete)'

.[]で配列要素を指定し、del(.property_to_delete)で削除するプロパティを指定します。

パイプラインの使い方

jqを使ってJSONデータを連続して処理するには、パイプラインを使って、複数のコマンドを結合します。例えば、以下のように入力します。

$ cat data.json | jq '.[] | select(.name == "John") | .age'

|で前のコマンドの出力を次のコマンドに渡します。上記の例では、select(.name == "John")でnameが"John"の行をフィルタリングし、.ageでageプロパティを取得します。

まとめ

jqは、JSONデータを操作するための便利なコマンドラインツールです。フィルタリング、プロパティの追加や変更、削除など、様々な操作が可能です。パイプラインを使って、複数のコマンドを結合することもできます。jqコマンドを使いこなして、JSONデータの処理を効率化しましょう。

補足

実はこの記事はChatGPTで作りました。
プロンプトのコツがわかるとZero-shotでここまで出力してくれるChatGPTはすごいですね。

https://www.amazon.co.jp/dp/B0BVWDV2DN

Discussion