Jq: 1 つのプロパティのキーと値を選択する

Jq: 1 つのプロパティのキーと値を選択する

次のような構造の json 翻訳ファイルがあります。

{
  "STRING_ID_1": {
    "en": "Some englisch text.",
    "de": "Some german text."
  },
  "STRING_ID_2": {
    "en": "Some other englisch text.",
    "de": "Some other german text."
  },
  ...
}

これを入力として使用して、「en.json」と「de.json」の 2 つのファイルを生成する必要があります。これらのファイルは、次の形式である必要があります。

{
  "STRING_ID_1": "Some englisch text.",
  ...
}

そして

{
  "STRING_ID_1": "Some german text.",
  ...
}

jqここで使用したいツールはこれだと思います。正しいコマンドを教えていただけますか?

答え1

$ cat file.json
{
  "STRING_ID_1": {
    "en": "Some englisch text.",
    "de": "Some german text."
  },
  "STRING_ID_2": {
    "en": "Some other englisch text.",
    "de": "Some other german text."
  }
}
$ jq 'with_entries(.value = .value.en)' file.json
{
  "STRING_ID_1": "Some englisch text.",
  "STRING_ID_2": "Some other englisch text."
}
$ jq 'with_entries(.value = .value.de)' file.json
{
  "STRING_ID_1": "Some german text.",
  "STRING_ID_2": "Some other german text."
}

出力を保存するには、別のファイル名にリダイレクトします。

変換により、各トップレベル キーの値が、キーと値のペアのオブジェクトではなく、英語 (またはドイツ語) の文字列の値に書き換えられます。

関連情報