Bash:複数行文字列からJSONを作成する方法[閉じる]

Bash:複数行文字列からJSONを作成する方法[閉じる]

私のawk出力は複数行の文字列です。

awkresult=`awk '{...}'`
echo "{ \"result\": \"$awkresult\" }" > result.json

結果の文字列には複数行を保持する必要があります。

私の考えの最善の方法は、各行の末尾に改行文字を挿入することですawkresult

私のawkスクリプトを変更することはできません。コードをどのように修正する必要がありますか?

ベストアンサー1

値の改行はJSONでエンコードする必要があります\n。 JSONパーサーはこれを実際の改行文字としてデコードします。挿入する言葉JSONファイルの値に改行文字が含まれると、JSON文書が破損する可能性があります。

使用jo(正しいエンコーディングなどを使用してシェルからJSON出力を生成するツール):

awkresult='some string
with newlines
the end'

jo result="$awkresult"

結果は次のとおりです。

{"result":"some string\nwith newlines\nthe end"}

かなり印刷:

jo -p result="$awkresult"

これにより

{
   "result": "some string\nwith newlines\nthe end"
}

出力をjoファイルにリダイレクトして出力を保存します。

jo result="$awkresult" >result.json

おすすめ記事