为什么grep返回不匹配的行

时间:2016-10-15 16:11:29

标签: linux grep

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

  

$ service --status-all | grep'友好'   [? ] apport
  [?控制台设置
  [? ]密码盘   [? ] cryptdisks-early
  [? ] dns-clean
  [+] 友好 - 恢复
  [? ] irqbalance
  [? ] killprocs

别名没什么好笑的。

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

2 个答案:

答案 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