Json

Jq:選擇一個道具的鍵和值

  • August 12, 2020

我有一個結構如下的 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”。它們應具有以下格式。

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

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

在我看來,這jq就是您要在這裡使用的工具。誰能給我正確的命令?

$ 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."
}

重定向到其他文件名以保存輸出。

轉換將每個頂級鍵的值重寫為英語(或德語)字元串的值,而不是鍵值對的對象。

引用自:https://unix.stackexchange.com/questions/604102