You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用grep为输出内容的不同部分设置不同颜色高亮

解决grep多内容不同高亮的问题

问题原因

你当前的管道方式之所以只显示JIRA REF的红色高亮,是因为每个grep进程仅能为自身匹配的内容设置高亮,且管道传递时,第二个grep会将第一个grep添加的高亮转义序列当作普通文本处理,最终覆盖或清除了之前的键高亮效果。

解决方案:用sed实现多模式不同高亮

sed支持对不同匹配规则设置独立的颜色转义码,不会过滤行,能完整保留目标内容并实现多色高亮。

命令示例

# 先提取目标行(包含2024-03-02的行及前后3-4行),再用sed设置双高亮
grep -A3 -B4 -P 2024-03-02 file.txt | sed -e 's/\(name\|displayName\|description\|exemptionCategory\|expiresOn\|policyDefinitionReferenceIds\|scope\)/\x1b[0;34m\1\x1b[0m/g' -e 's/\(JIRA REF\)/\x1b[0;31m\1\x1b[0m/g'

命令说明

  • \x1b[0;34m:ANSI蓝色转义码,用于高亮所有键(name、displayName等)
  • \x1b[0;31m:ANSI红色转义码,用于高亮JIRA REF
  • \x1b[0m:重置颜色,避免后续文本继承高亮
  • 两个-e参数分别对应两组替换规则,实现双高亮效果

备选方案:保留grep管道的改进写法

如果坚持用grep管道,需添加--color=always确保高亮转义序列被保留,且最后一个grep不过滤行,写法如下:

grep -A3 -B4 -P 2024-03-02 --color=always file.txt \
| GREP_COLOR='mt=01;34' grep --color=always -P '(name|displayName|description|exemptionCategory|expiresOn|policyDefinitionReferenceIds|scope)' -A3 -B4 \
| GREP_COLOR='mt=01;31' grep --color=always -P 'JIRA REF|.' -A3 -B4

最后一个grep的JIRA REF|.确保所有行都被保留,同时高亮JIRA REF。

内容的提问来源于stack exchange,提问作者martyzee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 15:56:15