grep不匹配包含问号的行
我想通过使用获取当前正在运行的所有服务的名称grep不匹配包含问号的行,grep,Grep,我想通过使用获取当前正在运行的所有服务的名称 sudo service --status-all | grep -E '[A-Za-z0-9-]+$' 在我看来,它应该从输出中选择正确的子字符串,但出于某种原因,所有以 [ ? ] 不匹配?问题是,具有[?]的管道位于stderr而不是stdout上,因此grep无法看到它们使用|和对两个管道进行grep查看以下示例: service --status-all |& grep -E '[A-Za-z0-9\.-]+$' 请注意,我还
sudo service --status-all | grep -E '[A-Za-z0-9-]+$'
在我看来,它应该从输出中选择正确的子字符串,但出于某种原因,所有以
[ ? ]
不匹配?问题是,具有
[?]
的管道位于stderr而不是stdout上,因此grep无法看到它们使用|和对两个管道进行grep查看以下示例:
service --status-all |& grep -E '[A-Za-z0-9\.-]+$'
请注意,我还使用\.
稍微更改了您的正则表达式,因为像rc.local
这样的服务不会被您原来的服务接受。您能举一个这样(不匹配)行的例子吗?如果您修改模式以在行尾包含可选空格,或者服务-状态全部2>&1 | grep-E'[A-Za-z0-9-]+$”
,会发生什么情况。