使用jq导出CSV时如何避免其解析换行符
问题原因
JSON字符串中的\n是转义序列,jq解析时会将其转换为真实的换行符,@csv过滤器默认会保留字段内的真实换行,最终就会出现你遇到的字段内换行的问题。你需要先把值里的真实换行替换为字面量\n字符串,再做CSV格式化。
正确命令
cat tmp.json | jq -r '.results | (first | map(.field)), (.[] | map(.value | gsub("\n"; "\\n"))) | @csv'
命令说明
相比你原来的命令,仅在取.value之后新增了gsub("\n"; "\\n")处理,作用是把每个字段值中所有的真实换行符,替换为字面量的\n字符串,再交给@csv做格式化,最终输出就会符合你的预期。
输出验证
执行上述命令后得到的输出如下:
"field1","field2" "value1-1","value1-2\n" "value2-1","value2-2\n"
内容的提问来源于stack exchange,提问作者hermit.crab
相关产品推荐
相关产品推荐

