我发现grep的——color=always标志非常有用。但是,grep只打印匹配的行(除非您要求上下文行)。假设它打印的每一行都有一个匹配项,那么高亮显示并不能增加尽可能多的功能。

我真的想猫一个文件,并看到整个文件与模式匹配突出显示。

是否有某种方法可以告诉grep打印正在读取的每一行,而不管是否有匹配?我知道我可以编写一个脚本来在文件的每一行上运行grep,但我很好奇标准grep是否可以做到这一点。


当前回答

你可以从https://github.com/kepkin/dev-shell-essentials上使用我的高亮脚本

它比grep更好,因为您可以用自己的颜色突出显示每个匹配。

$ command_here | highlight green "input" | highlight red "output"

其他回答

正如grep -E '|pattern'已经被建议的那样,只是想澄清一下,它也可以突出显示整行。

例如:tail -f somelog | grep——color -E '| \[2\]。*'(特别是-E '|部分):

或者你也可以使用银色搜索器

ag <search> --passthrough

另一种肮脏的方式:

grep -A80 -B80 --color FIND_THIS IN_FILE

我做了一个

alias grepa='grep -A80 -B80 --color'

把bashrc打印出来。

我使用以下命令来达到类似的目的:

grep -C 100 searchtext文件

这将说grep打印100 * 2行上下文,在高亮显示的搜索文本之前和之后。

grep的-z选项也非常灵活!

cat file1 | grep -z "pattern"