Grep显示匹配和不匹配

时间:2014-07-23 10:13:25

标签: linux unix ubuntu grep

如何使用grep命令显示匹配和不匹配的命令?匹配的应该是红色的,其他东西应该是正常的颜色。

有没有可用的grep选项?

2 个答案:

答案 0 :(得分:1)

您可以通过使用交替模式来实现此目的,其中第二个模式匹配每一行而不突出显示任何内容。

grep --color 'pattern\|^' file

如果您希望整条线变为彩色,而不仅仅是匹配的表达式,只需修改正则表达式以匹配整条线。

grep --color '.*pattern.*\|^' file

您可以使用grep -E又名egrep来避免反斜杠。 (我相信也可能有史前grep实施,根本不支持交替,但是他们也很难获得着色支持。)

答案 1 :(得分:1)

这是awk

cat file
one song
two cars
three houses

awk '/two/ {$0="\033[1;31m"$0"\033[0m"}1' file
one song
two cars
three houses

Whit awk您可以为不同的发现设置多种颜色。

awk '/two/ {$0="\033[1;31m"$0"\033[0m"} /hous/ {$0="\033[1;36m"$0"\033[0m"}1' file
one song
two cars
three houses

我在日志中使用tail来查看不同颜色的内容。

要仅为找到的单词着色,请执行以下操作:

awk '{gsub(/two/,"\033[1;31m&\033[0m")}1' file

要了解您可以使用的内容:

awk 'BEGIN {for (a=0;a<=1;a++) for (f=30;f<=37;f++) for (b=40;b<=47;b++) print "\033["a";"f";"b"m"a,f,b"\033[m"}'

甚至有256色版本。