当我使用 eg 时,cat file.txt | grep --color=tty "pattern"
我搜索的模式会突出显示。当我想了解每个匹配项的更多上下文时,grep 有-A
,-B
和-C
参数。
但是,我想显示整个文件(或任何命令输出)并突出显示某个模式。是否存在这样的突出显示命令或工具?
答案1
有一个unix.stackexchange.com 上的答案有一个巧妙的技巧:
grep -E --color 'pattern|$' file.txt
或者
grep --color 'pattern\|$' file.txt
匹配你的模式或每行的行尾。只有模式被高亮显示。
答案2
我喜欢确认。
ack --passthru somepattern filename
它类似于 grep,但更好。它默认突出显示,并且使用选项--passthru
显示整个文件(或标准输入),而不是仅显示匹配的行。
答案3
我也建议使用less
(或类似的东西),但我想向你展示一个更具教学意义的解决方案。一旦你定义了这个函数:
函数突出显示() { sed“s/$1/`tput smso`&`tput rmso`/g” “${2:--}” }
你可以这样使用它:
command | highlight pattern
highlight pattern file.txt
笔记:此版本区分大小写,若要更改,只需在表达式i
后面附加即可。g
sed
答案4
less
突出模式,所以
less -p 'mypattern' file.txt
或者
ridiculously | long | pipe | less
然后在 less 中/
搜索将要突出显示的模式。
边注:
您可以改进您的命令,例如
设置别名alias grep="grep --color=tty"
并像这样使用它:
grep 'mypattern' file.txt;