Answers:
有一个关于unix.stackexchange.com回答说有这个绝招:
grep -E --color 'pattern|$' file.txt
要么
grep --color 'pattern\|$' file.txt
与您的图案或每行的行尾相匹配。仅高亮显示图案。
GREP_OPTIONS='--color'
到您的~/.bashrc
(或修改设置为包括--color
)。您将需要启动一个新终端或在当前终端的命令行中执行该分配,以使其生效。
我也建议使用less
(或类似的)方法,但是我想向您展示更多的教学方法。定义此功能后:
函数Highlight() { sed“ s / $ 1 /`tput smso`&`tput rmso` / g”“ $ {2:-}” }
您可以通过以下方式使用它:
command | highlight pattern
highlight pattern file.txt
注意:此版本区分大小写,要更改仅在表达式i
后追加g
的内容sed
。
tput
而不是硬编码值。这样,您还可以避免使用echo -e
,这可能会产生其他影响。
prog | highlight "pattern"
或运行highlight "pattern" file
:highlight () { local file=${2:--}; sed "s/$1/$(tput smso)&$(tput rmso)/gi" "$file"; }
sed
技能基本上不存在。我要如何更改它以匹配区分大小写的模式。无论如何,我会将其添加到我的bash_functions include中。非常感谢你。
-C
以grep
足够高的值传递将执行此操作。
less
是突出显示的图案,所以
less -p 'mypattern' file.txt
要么
ridiculously | long | pipe | less
然后在较少的地方/
搜索将突出显示的模式。
边注:
您可以改善命令,例如
设置别名alias grep="grep --color=tty"
并像这样使用它:
grep 'mypattern' file.txt;
grep
(zgrep,bzgrep,bzfgrep等)使用。因此,如果希望所有形式的grep表现一致,则需要为每种形式的grep设置别名。@Casual上面的新答案不适用于类似的东西bzgrep pattern /var/log/messages.?.gz
,这是一个突出显示颜色非常有帮助的示例。
/etc/supercat
Ubuntu上),该文件设置了着色规则,它们基本上是颜色/正则表达式对(带有一些额外的规则);手册页也很简短。