【jqコマンド】JSONをLinuxで扱うコマンドの使い方
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はすごいですね。
Discussion