linux - 通过管道发送到 Grep 会给出太多结果

标签 linux unix grep linux-mint

我正在尝试检查特定服务是否正在通过 Linux 终端运行,并且以下命令似乎没有按预期过滤结果。不知道我做错了什么......

service --status-all | grep subversion

这会产生多行输出,例如,包括

 [ ? ] Networking

我不确定为什么会发生这种情况,因为字符串“subversion”不包含在上面的行中...

最佳答案

您应该使用:

service --status-all |& grep subversion

因为没有状态 ([ ? ]) 的服务被发送到 stderr,它不会通过管道传输到 grep(然后无论如何都会打印在您的终端上)。

|& 将 stderr 发送到 stdout,以便 grep 能够过滤它。

关于linux - 通过管道发送到 Grep 会给出太多结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34064431/

相关文章:

regex - 删除匹配和上一行

bash - 使用 sed/awk 插入文本中线

linux - 从 Shell 脚本运行 FFmpeg

c - 如何计算 ls 多列显示所需的列宽?

bash - 如何仅打印我当前所在的当前目录

svn - Subversion中所有版本文件的列表? (按名称删除文件)

linux - Bash 脚本 "fi lines not found"

linux - docker-compose/boot2docker 在 Ubuntu 中的使用

unix - Firebase:错误:未知选项 `--public'

c - linux中如何获取指定线程的注册信息?