私の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