我的awk
输出是多行字符串。
awkresult=`awk '{...}'`
echo "{ \"result\": \"$awkresult\" }" > result.json
Run Code Online (Sandbox Code Playgroud)
多行必须保留在结果字符串中。
我认为最好的方法是在每行末尾插入换行符awkresult
。
我的awk
脚本无法修改。我应该如何修改我的代码?
请注意,值中的换行符必须按照\n
JSON 进行编码。JSON 解析器会将这些解码为真正的换行符。在 JSON 文件的值中插入文字换行符会导致 JSON 文档损坏。
使用jo
(在 shell 中生成 JSON 输出的工具,具有正确的编码等):
awkresult='some string
with newlines
the end'
jo result="$awkresult"
Run Code Online (Sandbox Code Playgroud)
这将导致输出
{"result":"some string\nwith newlines\nthe end"}
Run Code Online (Sandbox Code Playgroud)
漂亮的打印:
jo -p result="$awkresult"
Run Code Online (Sandbox Code Playgroud)
这导致
{
"result": "some string\nwith newlines\nthe end"
}
Run Code Online (Sandbox Code Playgroud)
将输出重定向jo
到文件以保存输出,例如
jo result="$awkresult" >result.json
Run Code Online (Sandbox Code Playgroud)