如果我grep -ir "somethingtomatch" .
从当前目录运行,通常会得到如下结果:
./some/path/file1.html: filecontent filecontent keyword filecontent
./some/path/file2.html: filecontent filecontent filecontent keyword
./some/path/file3.html: filecontent keyword filecontent filecontent
./some/path/file4.html: keyword filecontent filecontent filecontent
我使用过grep --color=auto -ir 'somethingtomatch" .
,但它只会用红色突出显示白色关键字。我也想让左侧的文件名也用颜色编码。我该怎么做?
我在 OS X 中通过 bash 和 xterm 使用 Terminal.app(我也尝试过 xterm-color)。
答案1
您可以使用 $GREP_COLORS 环境变量更改颜色。对于您的情况,您可以尝试将export GREP_COLORS='fn=1;32'
文件名的颜色更改为绿色。
答案2
您必须对输出进行后处理。类似这样的操作可能会有效:
$ grep --color -ir 'pattern' files | perl -pe 's/^([^:]+):/chomp(my $f = `ls --color \Q$1`); $f/e'
(我假设您正在显示来自 Linux 系统的输出,因为 OSXls
没有为此提供有用的文件颜色。)
(注意:这个答案和那个答案的区别$GREP_COLORS
在于后者使用固定颜色,而我的答案是查询ls --color
。)
答案3
您可以使用 ack,它允许您为文件名、行号和匹配本身设置环境变量。