grep不匹配包含问号的行

时间:2014-08-05 18:15:26

标签: grep

我想通过

获取当前正在运行的所有服务的名称
sudo service --status-all | grep -E '[A-Za-z0-9-]+$'

对我来说,似乎应该从输出中选择正确的子串,但由于某种原因,所有行都以

开头
[ ? ]

不匹配?

1 个答案:

答案 0 :(得分:3)

问题是那些[ ? ]的人在stderr而不是stdout上,所以grep无法看到他们使用|& grep两个管道,请参阅下面的示例:

service --status-all |& grep -E '[A-Za-z0-9\.-]+$'

请注意,我还使用\.稍微更改了您的正则表达式,因为rc.local之类的服务不会被您原来的服务选中。