突出显示控制台搜索输出,同时显示整个命令输出

突出显示控制台搜索输出,同时显示整个命令输出

当我使用 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后面附加即可。gsed

答案4

less突出模式,所以

less -p 'mypattern' file.txt

或者

ridiculously | long | pipe | less

然后在 less 中/搜索将要突出显示的模式。

边注:

您可以改进您的命令,例如
设置别名alias grep="grep --color=tty"并像这样使用它:

grep 'mypattern' file.txt;

相关内容