![Jq: 1 つのプロパティのキーと値を選択する](https://rvso.com/image/178463/Jq%3A%201%20%E3%81%A4%E3%81%AE%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3%E3%81%AE%E3%82%AD%E3%83%BC%E3%81%A8%E5%80%A4%E3%82%92%E9%81%B8%E6%8A%9E%E3%81%99%E3%82%8B.png)
次のような構造の 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."
}
出力を保存するには、別のファイル名にリダイレクトします。
変換により、各トップレベル キーの値が、キーと値のペアのオブジェクトではなく、英語 (またはドイツ語) の文字列の値に書き換えられます。