2016-10-15 39 views
0

为什么grep返回不匹配的行?你可以看到grep突出显示了匹配。我怎样才能获得理想的行为?这是在Ubuntu中。为什么grep返回不匹配的行

$ service --status-all | grep'friendly'
[? ] apport
[? ] console-setup
[? ] cryptdisks
[? ] cryptdisks-early
[? ] dns-clean
[+] 友善 -recovery
[? ] irqbalance
[? ] killprocs

别名没什么好笑的。

$ alias 
alias grep='grep --color=auto' 
+2

似乎无法复制。 –

+1

在命令行中键入:“which grep”查看您正在使用哪个grep。 我刚试过你的命令(使用相同的别名),只得到包含预期匹配的输出。我正在运行Ubuntu。 – mangotang

回答

3

看起来它不是grep。将stderr发送到控制台。

$ service --status-all > test.txt 
[ ? ] apport 
[ ? ] console-setup 
... 

$ service --status-all 2> test.txt 
<no output> 

因此,一个可能的解决方案是重新stderrstdout然后grep的:

$服务--status-2全部> & 1 | grep的“友好”
[+] 友好 -recovery

0

,可以控制前和使用该-C标志比赛结束后显示上下文的量,即service --status-all | grep -C 0 'friendly'只会显示而没有任何相匹配的精确线上下文。

欲了解更多信息,你可以看到这样的回答:https://stackoverflow.com/a/9083/2791719

相关问题