抑制Grep中的非匹配行

时间:2011-10-01 20:40:24

标签: linux bash grep

在Ubuntu中运行service --status-all | grep "firestarter"会显示service --status-all的整个输出,其中文本“firestarter”以红色突出显示。你如何让grep只显示包含匹配文本的行,并隐藏其他所有内容?

3 个答案:

答案 0 :(得分:3)

也许service --status-all写入stderr,而不是stdout?然后你可以使用

service --status-all 2>&1 | grep firestarter

答案 1 :(得分:2)

你必须设置一些奇怪的env变量。试试这个:

service --status-all | `which grep` firestarter

或者:

service --status-all | /bin/grep firestarter

如果可能,请显示envalias的输出,以便我们看到您的grep命令有什么问题。


对我来说,我有:

[ 13:55 jon@host ~ ]$ echo $GREP_OPTIONS
--color=always

你可能在那里设置了一些东西,和/或在GREP_COLOR中导致了这一点。

答案 2 :(得分:1)

如果您不想使用别名,而是使用原始命令,则可以尝试“\ cmd”。 e.g。

service --status-all | \grep "firestarter"