grep
与该选项一起使用时有没有办法对行号进行着色-n
?
例如,
echo "hello" | grep -n lo
输出
1:hello
其中lo
为红色(匹配)。我可以配置 grep 来对行号(即1:
部分)进行着色吗?是否有特定的 shell/终端允许这样做?
答案1
看一眼GREP_COLORS,您会发现l
ine- n
number 的颜色由 定义,ln
另一个ile- ame colorizefn
定义;这些接受 3 套f
n
X;是;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
如发现的那样这里为你工作?