2017-06-04 14 views
1

jqで2つの異なるjsonファイル間の相関を見つけることは可能ですか?私は2つのファイルを持っていますが、同じIDキーの両方が異なる情報を持っています。jqとの2つの異なるjsonファイル間の相関

はFile1

{ 
    "id": 3918389, 
    "name": "Application", 
    "servers": 5566625 
} 

File2の

{ 
    "ServerID": 5566625, 
    "AccountID": 661737, 
    "HostName": "example.com", 

} 

私は、 "サーバID" と "サーバ" は、同じであるファイルは、このようなすべての情報マージしたい:

出力

{ 
"id": 3918389, 
"name": "Application", 
"AccountID": 661737, 
"HostName": "example.com", 
} 

アドバイスはありませんciated。

ありがとうございます!

答えて

2

JQ溶液:

cat File[1-2] | jq -s 'if .[0].servers == .[1].ServerID then 
       .[0] + .[1] | del(.servers,.ServerID) else "not match" end' 

出力:

{ 
    "id": 3918389, 
    "name": "Application", 
    "AccountID": 661737, 
    "HostName": "example.com" 
} 

詳細:

  • 個のcat File[1-2] - 連結しFile1File2順次

  • -s--slurp)の標準出力内容に送信 - 代わり入力における各JSONオブジェクトのフィルタを実行する、大きなアレイ及び実行に全入力ストリームを読み取りますフィルタは1回だけです。

  • if-then-else - 重要な性質が.[0].servers == .[1].ServerID等しい場合の条件は、そうでない場合は、del(.servers,.ServerID)比べてキーを削除するとともに、2つのオブジェクト.[0] + .[1]のマージを行い - 版画not match

+0

はそれが実際に動作する、ありがとうございます! 私は今jqを練習していますが、File1に同じ "名前"を持つ "サーバー"がたくさん含まれているかどうか、 "ServerID"のすべてのホスト名を収集できますか? ペーストビンの例が含まれています。 https://pastebin.com/wBWgJ6da もう一度おねがいします! –

+1

@TökiMivan、新しい条件のための新しい質問を作成するのは良いことです – RomanPerekhrest

関連する問題