如何使用jq修改null、布尔值、数字的显示颜色?
能否通过环境变量修改jq中null、布尔值、数字的显示颜色?
原生jq本身不支持通过设置jq_int_color、jq_bool_color这类自定义环境变量来直接修改数字、布尔值、null的显示颜色,但可以通过两种方式实现自定义颜色效果:
1. 手动嵌入终端颜色转义序列
直接在jq脚本中插入ANSI颜色码,针对不同数据类型设置高亮:
# 示例:数字设为黄色,布尔值设为红色,null设为黑色 cat your_data.json | jq ' def color_num: "\u001b[33m\(.)\u001b[0m"; def color_bool: "\u001b[31m\(.)\u001b[0m"; def color_null: "\u001b[30m\(.)\u001b[0m"; walk( if type == "number" then color_num elif type == "boolean" then color_bool elif type == "null" then color_null else . end ) '
\u001b[33m等是终端颜色控制码,\u001b[0m用于重置颜色到默认walk函数会递归遍历JSON的所有字段,对匹配类型的内容应用颜色
2. 使用第三方增强版jq工具
比如Go语言实现的gojq,它支持通过环境变量自定义语法高亮颜色:
export GOJQ_COLOR_NUMBER=yellow export GOJQ_COLOR_BOOLEAN=red export GOJQ_COLOR_NULL=black
之后用gojq替代原生jq处理数据,就能自动应用设置的颜色。
内容的提问来源于stack exchange,提问作者Alexander Mills
相关产品推荐
相关产品推荐

