jq ツールとその一般的な使用法 | JD Logistics Technology Team

最近、仕事で JSON を扱うことが多くなり、jq について徹底的に勉強しました。これまでの jq の使用は常に JSON データの書式設定のレベルでした。実際、その機能ははるかに優れていますそれよりも。
JSON データを処理する場合、多くの場合、コマンド ラインでフィルタリング、クエリ、編集操作を実行する必要があります。jq は強力なコマンドライン JSON 処理ツールであり、JSON データに対してさまざまな操作を簡単に実行できます。この記事では、jq の基本概念と共通の機能を簡単に紹介し、いくつかの実践例を示します。

1. jq の概要

jq は、軽量で柔軟なコマンドライン JSON プロセッサです。キー、値、配列インデックスに基づいて JSON データを抽出、フィルタリング、変更することができます。jq には主に次の機能があります。

  1. ストリーミング処理に基づいており、大規模な JSON データ ファイルに適しています。

  2. Unix パイプおよび I/O リダイレクトと互換性のある、豊富な演算子と関数のセットを提供します。

  3. 条件付きフィルタリング、文字列操作、数学的操作、カスタム関数などの高度な機能をサポートします。

2.jqをインストールする

ほとんどの Linux ディストリビューションでは、jq はパッケージ マネージャーを介して簡単にインストールできます。

  • Debian ベースのディストリビューションの場合:

    sudo apt-get install jq
    
    
  • RHEL ベースのディストリビューションの場合:

    sudo yum install jq
    
    
  • Arch Linux の場合:

    sudo pacman -S jq
    
    
  • macOS では、Homebrew を使用してインストールできます。

    brew install jq
    
    

3. jqの一般的な使い方

jq の一般的な使用法をいくつか示します。

1. 属性値の読み取り

入力 JSON オブジェクトからプロパティ値を抽出するには、.演算子を使用できます。

例: 次のような名前のファイルがありますsample.json

{
  "name": "Alice",
  "age": 30,
  "city": "New York"
}

名前を抽出します:

cat sample.json | jq '.name'

出力結果:

"Alice"

2. 配列要素をフィルタリングする

配列要素をフィルタリングするには、演算子を使用できます[]

例: 次のような名前のファイルがありますstudents.json

[
  {
    "name": "Alice",
    "age": 30,
    "city": "New York"
  },
  {
    "name": "Bob",
    "age": 25,
    "city": "San Francisco"
  },
  {
    "name": "Charlie",
    "age": 23,
    "city": "Los Angeles"
  }
]

すべての名前を抽出します。

cat students.json | jq '.[].name'

出力結果:

"Alice"
"Bob"
"Charlie"

3. 特定の配列要素を選択します

特定の属性を持つ特定の要素を返したい場合は、セレクターを使用できます。たとえば、25 歳以上の学生を選択するには:

cat students.json | jq '.[] | select(.age > 25)'

出力結果:

{
  "name": "Alice",
  "age": 30,
  "city": "New York"
}

4. 配列のソートと一意化

sortsort_by()およびunique関数を使用して配列を操作できます。

たとえば、sample-array.jsonファイルから年齢を並べ替えて重複を排除します。

[30, 20, 25, 30, 25, 20]

重複を並べ替えて削除します。

cat sample-array.json | jq 'unique | sort'

出力結果:

[
  20,
  25,
  30
]

5. データを変更する

jq は、フィルタリングとクエリに加えて、データの作成と変更もサポートします。たとえば、次students.jsonの各生徒に「isActive」属性を追加します。

cat students.json | jq '.[] | {name, age, city, isActive: true}'

出力結果:

{
  "name": "Alice",
  "age": 30,
  "city": "New York",
  "isActive": true
}
{
  "name": "Bob",
  "age": 25,
  "city": "San Francisco",
  "isActive": true
}
{
  "name": "Charlie",
  "age": 23,
  "city": "Los Angeles",
  "isActive": true
}

4. まとめ

jq は、さまざまなデータ操作関数をサポートし、JSON データをより便利かつ効率的に処理できる非常に強力なコマンドライン JSON 処理ツールです。この記事では、いくつかの一般的な jq の使用例をリストしますが、jq の機能はそれだけではありません。さらに豊富な機能については、公式ドキュメントを参照してください (クリックして表示)。jq に習熟すると、コマンド ラインの JSON データ処理能力が向上し、他の処理ツールや分析ツールにより便利なデータ ソースを提供できるようになります。

著者: JD Logistics Zhang Tao

出典:JD Cloud Developer Community Ziyuanqishuo Tech 転載の際は出典を明記してください

Qt 6.6が正式リリース Gomeアプリの抽選ページのポップアップウィンドウが創設者を侮辱 Ubuntu 23.10が正式リリース 金曜日を利用してアップグレードするのもいいかもしれません! RISC-V: 単一の企業や国によって管理されていない Ubuntu 23.10 リリース エピソード: ヘイトスピーチが含まれているため ISO イメージが緊急に「リコール」された ロシアの企業は Loongson プロセッサをベースにしたコンピュータとサーバーを製造している ChromeOS は Google デスクトップを使用する Linux ディストリビューション環境 23 歳の 博士課程学生が Firefox の 22 年前の「ゴーストバグ」を修正 TiDB 7.4 リリース: MySQL 8.0 と正式互換 Microsoft が Windows Terminal Canary バージョンを発表
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/4090830/blog/10117969