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


19

例如,当我使用cat file.txt | grep --color=tty "pattern"模式时,搜索会突出显示。当我想围绕各击出了一些更多的上下文,grep的有-A-B-C参数。

但是,我想显示整个文件(或任何命令输出)并突出显示某种模式。是否存在这样的突出显示命令或工具?


您现在想做什么与已经做的有什么不同?
本杰明·班尼尔

Answers:


22

有一个关于unix.stackexchange.com回答说有这个绝招:

grep -E --color 'pattern|$' file.txt

要么

grep --color 'pattern\|$' file.txt

与您的图案或每行的行尾相匹配。仅高亮显示图案。


+1简单,易于适应zgrep,bzgrep等。太好了!
Stefan Lasiewski

有什么办法可以一直避免键入--color吗?我认为将颜色选项嵌入grep非常基本,不确定我们为什么每次都要显式键入颜色。我试图创建脚本,说grepd文件有一个bash,说grep --color $ 1 $ 2,但是它不起作用。这里有任何线索可以解决此问题
Srujan Kumar Gulla

1
@lordlupine:添加GREP_OPTIONS='--color'到您的~/.bashrc(或修改设置为包括--color)。您将需要启动一个新终端或在当前终端的命令行中执行该分配,以使其生效。
暂停,直到另行通知。

9

我喜欢阿克

ack --passthru somepattern filename

就像grep,但更好。默认情况下,它突出显示,并带有--passthru选项显示整个文件(或标准输入),而不是仅显示匹配的行。


1
如果您试图将输出通过管道传输到ack(例如from)tail,则也需要使用该--filter选项。例如:tail -f myLogFile | ack --filter --passthru pattern
sparrowt

5

我也建议使用less(或类似的)方法,但是我想向您展示更多的教学方法。定义此功能后:

函数Highlight()
{
    sed“ s / $ 1 /`tput smso`&`tput rmso` / g”“ $ {2:-}”
}

您可以通过以下方式使用它:

command | highlight pattern
highlight pattern file.txt

注意:此版本区分大小写,要更改仅在表达式i后追加g的内容sed


1
我将调用tput而不是硬编码值。这样,您还可以避免使用echo -e,这可能会产生其他影响。
伊格纳西奥·巴斯克斯

您说的没错,我没有运气就搜寻了它。谢谢。
cyrus

此版本不需要捕获括号,可以通过prog | highlight "pattern"或运行highlight "pattern" filehighlight () { local file=${2:--}; sed "s/$1/$(tput smso)&$(tput rmso)/gi" "$file"; }
已暂停,直到另行通知。

我的sed技能基本上不存在。我要如何更改它以匹配区分大小写的模式。无论如何,我会将其添加到我的bash_functions include中。非常感谢你。
DerMike 2010年

@DerMike:现在区分大小写。
cyrus


3

less 是突出显示的图案,所以

less -p 'mypattern' file.txt

要么

ridiculously | long | pipe | less

然后在较少的地方/搜索将突出显示的模式。

边注:

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

grep 'mypattern' file.txt;

1
您应避免使用GREP_OPTIONS,而应使用别名。参见:bugs.launchpad.net/ubuntu/+bug/67141
lesmana 2010年

初发非nocere。删除。
Casual Coder 2010年

GREP_OPTIONS由多种形式的grep(zgrep,bzgrep,bzfgrep等)使用。因此,如果希望所有形式的grep表现一致,则需要为每种形式的grep设置别名。@Casual上面的新答案不适用于类似的东西bzgrep pattern /var/log/messages.?.gz,这是一个突出显示颜色非常有帮助的示例。
Stefan Lasiewski

1

有一个很好的超级猫工具,正是出于这个目的。它既可以为控制台输出着色,也可以从输入中产生“突出显示”的html。


谢谢,这看起来太过分了。但是,我现在似乎无法正常工作。
DerMike 2011年

1
看一下它的配置文件(在/etc/supercatUbuntu上),该文件设置了着色规则,它们基本上是颜色/正则表达式对(带有一些额外的规则);手册页也很简短。
伊万·塔拉索夫

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.