2017-09-06 4 views
1

として2つのファイルをエコーし​​ます。どうすればいい?Linuxの猫は、私は、コマンドラインから2つの.jsonファイルに対してこの操作を行うしたい1

+0

jsonを読み書きするときに 'jq(1)'ツールを使います。 I/Oは最小限のサポートしかありませんが、これで十分です。 – o11c

+2

これは有効なJSONではありません。 – SLaks

+1

また、あなたはキーを持っていないので配列を意味すると思います。 – o11c

答えて

1
echo "[ $(cat file1.json) , $(cat file2.json) ]" 

限り、ファイル自体は有効なJSON

+0

これは決して有効なJSONを生成しません –

+0

OPは単に作業コンセプトを示したかったので、私は推測しています。質問は、現在書かれているように、JSON解析を要求していません。 –

+0

私はそれが不明であることを知っています。私はダウンボートしませんでした。OPまたは他の誰かがここで有効なJSON出力を気にしている場合に言及しました。 –

-1
{ cat file1.json ; echo ','; cat file2.json; } 
+1

説明を含めてください。コードのみの回答はごくわずかです。さらに、私はこれがOPが望むものを達成するとは思っていません。これは、サブシェル内に1つのファイル、改行の上に '、'そして別のファイルを印刷します。 –

1

あるとしてあなたが最終的な構造があることが、私は助けるために試してみましょうしたいのか全く明らかではない作品。

有効なjsonのみを含む2つのファイルがあり、両方のファイルを配列のメンバとして印刷することを質問から推測しています。

私はfile1.jsonはこのようになっていることを例のために仮定します:

{"name":"object2"} 

これはjqで行うことができ、ために非常に便利なツール:このような

{"name":"object1"} 

file2.json-s/--slurpオプションを使用してJSONストリームを解析すると、各オブジェクトを別々に処理する代わりに入力ストリーム全体を1つのバッファに読み込みます。オブジェクトに配列を結合するという追加の利点があります。デフォルトの「パススルー」フィルタ'.'を使用して、両方のファイルを配列にパイプすることができます。私は非常にjqをお勧めします

[ 
    { 
    "name": "object1" 
    }, 
    { 
    "name": "object2" 
    } 
] 

Demo

あなたがオブジェクトの内部その配列をしたい場合は、フィルタ{"array":.}

Demo

を使用することができます:ウィル出力

cat file1.json file2.json | jq --slurp '.' 

任意のJSONの相互作用のためにあなたは、シェルから行う上で計画していますが、できない、と組み込みコマンドを使用する必要がある場合、あなたが一緒にこのような何かハック可能性:

echo '['"$(cat file1.json)"','"$(cat file2.json)"']' 

をこのソリューションでは、その中のコマンドを実行するためにサブシェル$()を使用し、含まそれらのエコーでの出力

もう一度言いますと、jqを使用してください。よりクリーンで丈夫で、入出力が有効なJSONであることを保証します。

+0

Willは、有用性がありますが、四角形の括弧を使用するように質問を編集した後、受け入れられた答えは最も簡単でした。ありがとう。 –

関連する問題