grep 中的行号着色

grep 中的行号着色

grep与该选项一起使用时有没有办法对行号进行着色-n

例如, echo "hello" | grep -n lo 输出

1:hello

其中lo为红色(匹配)。我可以配置 grep 来对行号(即1:部分)进行着色吗?是否有特定的 shell/终端允许这样做?

答案1

看一眼GREP_COLORS,您会发现line- nnumber 的颜色由 定义,ln另一个ile- ame colorizefn定义;这些接受 3 套fnX;;Z具有以下格式的颜色:

  • X可以设置为以下之一(代表显示属性):

    0 重置所有属性

    1 明亮

    2 暗淡

    4 下划线

    5 眨眼

    7 反向

    8 隐藏

  • Y可以设置为以下之一(代表前景色):

    30黑色

    31 红

    32 绿色

    33 黄色

    34 蓝色

    35 洋红色

    36青色

    37 白色

  • Z可以设置为以下之一(代表背景颜色):

    40黑色

    41 红

    42 绿色

    43 黄色

    44 蓝色

    45 洋红色

    46青色

    47 白色

ln因此,要以这种格式对行号设置进行着色ln=X;Y;Z(选择X&&Z颜色为上面列表中的一种); “请注意,您的终端应支持 ANSI 颜色”:

GREP_COLORS='ln=5;30;43' \grep -n --color 'pattern'

测试seq 10 |GREP_COLORS='ln=5;30;43:fn=0' \grep --color -nH .(注意到行号在黄色背景和黑色前景色中闪烁?我们重置了fn文件名颜色);是的,多个颜色选项可以用冒号分隔。

也可以看看如何让 grep 闪烁匹配的模式?这是我最喜欢的。

答案2

确实grep "string" --color=always filename如发现的那样这里为你工作?

相关内容