[解決済み] どのようにjqを使用して2つのファイルから2つのJSONオブジェクトをマージするには?
2022-04-21 19:46:52
質問
を使用しています。 jq のツール(jq-json-processor)をシェルスクリプトで実行し、jsonをパースしています。
2つのjsonファイルがあり 2つのファイルを1つのユニークなファイルに統合したい
ここにファイルの内容が表示されます。
ファイル1
{
"value1": 200,
"timestamp": 1382461861,
"value": {
"aaa": {
"value1": "v1",
"value2": "v2"
},
"bbb": {
"value1": "v1",
"value2": "v2"
},
"ccc": {
"value1": "v1",
"value2": "v2"
}
}
}
ファイル2
{
"status": 200,
"timestamp": 1382461861,
"value": {
"aaa": {
"value3": "v3",
"value4": 4
},
"bbb": {
"value3": "v3"
},
"ddd": {
"value3": "v3",
"value4": 4
}
}
}
期待される結果
{
"value": {
"aaa": {
"value1": "v1",
"value2": "v2",
"value3": "v3",
"value4": 4
},
"bbb": {
"value1": "v1",
"value2": "v2",
"value3": "v3"
},
"ccc": {
"value1": "v1",
"value2": "v2"
},
"ddd": {
"value3": "v3",
"value4": 4
}
}
}
いろいろな組み合わせを試してみましたが、期待した結果とは異なり、次のような結果しか得られません。
{
"ccc": {
"value2": "v2",
"value1": "v1"
},
"bbb": {
"value2": "v2",
"value1": "v1"
},
"aaa": {
"value2": "v2",
"value1": "v1"
}
}
{
"ddd": {
"value4": 4,
"value3": "v3"
},
"bbb": {
"value3": "v3"
},
"aaa": {
"value4": 4,
"value3": "v3"
}
}
このコマンドを使うと
jq -s '.[].value' file1 file2
解決方法は?
1.4以降では、これは
*
演算子です。2つのオブジェクトが与えられたとき、再帰的にそれらをマージします。例えば
jq -s '.[0] * .[1]' file1 file2
重要
-s (--slurp)
フラグを使用すると、ファイルを同じ配列に格納することができます。
得られるだろう。
{
"value1": 200,
"timestamp": 1382461861,
"value": {
"aaa": {
"value1": "v1",
"value2": "v2",
"value3": "v3",
"value4": 4
},
"bbb": {
"value1": "v1",
"value2": "v2",
"value3": "v3"
},
"ccc": {
"value1": "v1",
"value2": "v2"
},
"ddd": {
"value3": "v3",
"value4": 4
}
},
"status": 200
}
他のキーも取り除きたい場合(期待した結果のように)、一つの方法として、このようになります。
jq -s '.[0] * .[1] | {value: .value}' file1 file2
あるいは、おそらくより効率的な方法(他の値をマージしないため)。
jq -s '.[0].value * .[1].value | {value: .}' file1 file2
関連
-
[解決済み] マニフェスト 行: 1, 列: 1, 構文エラー
-
[解決済み] Azure VMのエラーです。"あなたのアカウントは、このデバイスを使用できないように設定されています。詳細については、システム管理者にお問い合わせください" [終了しました]。
-
[解決済み] cURLでJSONデータをPOSTするにはどうすればよいですか?
-
[解決済み] scpを使ってリモートからローカルにフォルダをコピーするにはどうしたらいいですか?
-
[解決済み] JavaScriptでJSONをきれいに印刷する
-
[解決済み] ワイルドカードマッチングに基づいて、現在のフォルダとサブフォルダ内のすべてのファイルを再帰的に検索するにはどうすればよいですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] Microsoft JSONの日付はどのようにフォーマットするのですか?
-
[解決済み] テキストファイルから、特定の文字列を含むすべての行を削除するにはどうすればよいですか?
-
[解決済み] コマンドラインから .bash_profile を再読み込みする方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
com.fasterxml.jackson.databind.exc.MismatchedInputException: インスタンスのデシリアライズができない
-
[解決済み] JSONでコメントを使用することはできますか?
-
[解決済み] JSONでnullを表現する
-
[解決済み] node.jsでJSONをpretty-printするにはどうしたらいいですか?
-
jsonファイルのインポートエラー、TypeError expected string or buffer
-
[解決済み] JSONファイルのMongoimport
-
[解決済み] Node.jsでJSONオブジェクトの内容をログに記録する方法は?
-
[解決済み] bashの変数をjqに渡す
-
[解決済み] JSONオブジェクトをBufferに変換し、BufferをJSONオブジェクトに戻す。
-
[解決済み] PostgresでJSONフィールドにインデックスを作成するには?