为什么grep返回不匹配的行?你可以看到grep突出显示匹配。我怎样才能获得理想的行为?这是在Ubuntu。
$ service --status-all | grep'友好' [? ] apport
[?控制台设置
[? ]密码盘 [? ] cryptdisks-early
[? ] dns-clean
[+] 友好 - 恢复
[? ] irqbalance
[? ] killprocs
别名没什么好笑的。
$ alias
alias grep='grep --color=auto'
答案 0 :(得分:3)
看起来不是grep。它被stderr
发送到控制台。
$ service --status-all > test.txt
[ ? ] apport
[ ? ] console-setup
...
VS
$ service --status-all 2> test.txt
<no output>
所以可能的解决方案是将stderr
重定向到stdout
然后grep:
$ service --status-all 2&gt;&amp; 1 | grep'友好' [+] 友好 - 恢复
答案 1 :(得分:0)
您可以使用-C
标记控制匹配前后显示的上下文量,即service --status-all | grep -C 0 'friendly'
只会显示匹配的确切行,而不显示任何上下文。
有关详细信息,您可以看到以下答案:https://stackoverflow.com/a/9083/2791719