使用jq处理数据时,如何获取不含多余字符的输出文件?
问题描述
通过以下代码生成test.json数据:
await CLI.mount({ name: "test.json", data: JSON.stringify([{some:{data: {test: 'data'}}}, {some: {data: "there"}}]) });
使用jq处理后,输出包含[1;39m这类无法被系统识别的ANSI控制字符,具体输出如下:
Output of jq: [1;39m{ [0m[34;1m"test"[0m[1;39m: [0m[0;32m"data"[0m[1;39m [1;39m}[0m
查阅jq手册所有参数后未找到解决方法,需获取不含多余字符的jq输出文件。
解决方法
这些多余字符是jq默认启用的彩色输出产生的ANSI转义序列,只需在调用jq时添加--monochrome-output(或简写-M)参数,即可禁用彩色输出,得到纯文本格式的结果。
示例命令:
jq -M '.[] | .some.data' test.json > clean_output.json
如果不需要格式化输出,想要紧凑的JSON结构,可搭配-c参数:
jq -Mc '.[] | .some.data' test.json > compact_clean_output.json
此外,也可以通过设置环境变量NO_COLOR=1全局禁用jq的彩色输出,适合需要多次调用jq的场景:
NO_COLOR=1 jq '.[] | .some.data' test.json > clean_output.json
内容的提问来源于stack exchange,提问作者Sergey
相关产品推荐
相关产品推荐

