如何在jq拼接文本时强制启用JSON格式化输出?
解决jq字符串拼接时JSON格式化输出的问题
当使用jq .直接输出JSON时,默认会自动格式化内容;但在字符串拼接的插值表达式\(.)中,JSON会被转为紧凑格式。要在拼接场景下强制启用格式化输出,有两种简单可行的方法:
方法一:通过--indent参数指定缩进
使用--indent设置缩进空格数,让插值的JSON内容自动按照指定格式输出:
$ echo '{"foo":"bar", "baz":[1,2,3]}' | jq --indent 2 -r '"My value is:\n\(.)\nSome other stuff"'
输出结果:
My value is: { "foo": "bar", "baz": [ 1, 2, 3 ] } Some other stuff
方法二:用tostring函数转换为格式化字符串
在插值时,用(.|tostring)替代直接的(.),tostring会保留JSON的原生格式化样式:
$ echo '{"foo":"bar", "baz":[1,2,3]}' | jq -r '"My value is:\n" + (.|tostring) + "\nSome other stuff"'
输出结果与方法一完全一致。
内容的提问来源于stack exchange,提问作者glenn jackman
相关产品推荐
相关产品推荐

