我发现grep的——color=always标志非常有用。但是,grep只打印匹配的行(除非您要求上下文行)。假设它打印的每一行都有一个匹配项,那么高亮显示并不能增加尽可能多的功能。
我真的想猫一个文件,并看到整个文件与模式匹配突出显示。
是否有某种方法可以告诉grep打印正在读取的每一行,而不管是否有匹配?我知道我可以编写一个脚本来在文件的每一行上运行grep,但我很好奇标准grep是否可以做到这一点。
我发现grep的——color=always标志非常有用。但是,grep只打印匹配的行(除非您要求上下文行)。假设它打印的每一行都有一个匹配项,那么高亮显示并不能增加尽可能多的功能。
我真的想猫一个文件,并看到整个文件与模式匹配突出显示。
是否有某种方法可以告诉grep打印正在读取的每一行,而不管是否有匹配?我知道我可以编写一个脚本来在文件的每一行上运行grep,但我很好奇标准grep是否可以做到这一点。
当前回答
我想推荐ack——它比grep更好,是程序员的强大搜索工具。
$ ack --color --passthru --pager="${PAGER:-less -R}" pattern files
$ ack --color --passthru pattern files | less -R
$ export ACK_PAGER_COLOR="${PAGER:-less -R}" $ ack --passthru pattern files
我喜欢它,因为它默认为递归搜索目录(并且比grep -r聪明得多),支持完整的Perl正则表达式(而不是POSIXish正则表达式(3)),并且在搜索许多文件时具有更好的上下文显示。
其他回答
或者你也可以使用银色搜索器
ag <search> --passthrough
如果您想用不同的颜色突出显示几个模式,请参阅这个bash脚本。
基本用法:
echo warn error debug info 10 nil | colog
你可以改变图案和颜色,同时运行按一键,然后进入键。
grep的-z选项也非常灵活!
cat file1 | grep -z "pattern"
你可以从https://github.com/kepkin/dev-shell-essentials上使用我的高亮脚本
它比grep更好,因为您可以用自己的颜色突出显示每个匹配。
$ command_here | highlight green "input" | highlight red "output"
这是一种方法,
wc -l filename
会给你行数,比如NN,你能做什么
grep -C NN --color=always filename