我发现grep的——color=always标志非常有用。但是,grep只打印匹配的行(除非您要求上下文行)。假设它打印的每一行都有一个匹配项,那么高亮显示并不能增加尽可能多的功能。
我真的想猫一个文件,并看到整个文件与模式匹配突出显示。
是否有某种方法可以告诉grep打印正在读取的每一行,而不管是否有匹配?我知道我可以编写一个脚本来在文件的每一行上运行grep,但我很好奇标准grep是否可以做到这一点。
我发现grep的——color=always标志非常有用。但是,grep只打印匹配的行(除非您要求上下文行)。假设它打印的每一行都有一个匹配项,那么高亮显示并不能增加尽可能多的功能。
我真的想猫一个文件,并看到整个文件与模式匹配突出显示。
是否有某种方法可以告诉grep打印正在读取的每一行,而不管是否有匹配?我知道我可以编写一个脚本来在文件的每一行上运行grep,但我很好奇标准grep是否可以做到这一点。
当前回答
正如grep -E '|pattern'已经被建议的那样,只是想澄清一下,它也可以突出显示整行。
例如:tail -f somelog | grep——color -E '| \[2\]。*'(特别是-E '|部分):
其他回答
这是一种方法,
wc -l filename
会给你行数,比如NN,你能做什么
grep -C NN --color=always filename
你可以从https://github.com/kepkin/dev-shell-essentials上使用我的高亮脚本
它比grep更好,因为您可以用自己的颜色突出显示每个匹配。
$ command_here | highlight green "input" | highlight red "output"
使用ripgrep,即rg: https://github.com/BurntSushi/ripgrep
rg - passthru……
颜色是默认的:
rg -t tf -e 'key.*tfstate' -e dynamodb_table
--passthru
Print both matching and non-matching lines.
Another way to achieve a similar effect is by modifying your pattern to
match the empty string.
For example, if you are searching using rg foo then using
rg "^|foo" instead will emit every line in every file searched, but only
occurrences of foo will be highlighted.
This flag enables the same behavior without needing to modify the pattern.
亵渎神明,没错,但格雷普已经沾沾自喜了。
安装ripgrep
你再也回不去了。
我使用以下命令来达到类似的目的:
grep -C 100 searchtext文件
这将说grep打印100 * 2行上下文,在高亮显示的搜索文本之前和之后。
如果您想用不同的颜色突出显示几个模式,请参阅这个bash脚本。
基本用法:
echo warn error debug info 10 nil | colog
你可以改变图案和颜色,同时运行按一键,然后进入键。