linux - 如何使用 grep 进行匹配但不打印匹配项?

标签 linux bash shell grep

我是 linux shell 的新手,我正在尝试这样做,最好是在一行中,条件如下:它无法向终端输出任何内容。

/var/folder/program.exe -L parameters | grep text_to_filter && echo SomeText >'/tmp/Log.txt'

问题是 .exe 向终端吐出 XML 数据。我不知道如何 grep,使用退出状态,但不会让屏幕因每场比赛的输出而变得困惑。如果我使用 /dev/null 2>&1,它会完全通过管道传输,但我无法 grep 数据。有什么想法吗?

最佳答案

使用grep -q(安静)

/var/folder/program.exe -L parameters |
grep -q "text_to_filter" && echo 'SomeText' > '/tmp/Log.txt'

根据man grep:

-q, --quiet, --silent Quiet; do not write anything to standard output. Exit immediately with zero status if any match is found, even if an error was detected. Also see the -s or --no-messages option.

关于linux - 如何使用 grep 进行匹配但不打印匹配项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19841812/

相关文章:

regex - grep 正则表达式开始于,结束于但不包含

bash - 如何在while循环条件下执行多个命令?

linux - 以非阻塞方式从 perl 调用 bash 脚本并获取这个新后台进程的 pid

macos - 如何让shell脚本等待pkg完成安装

linux - rsync 仅某些类型的文件

php - 如何在 Alpine 3.6 上安装 PHP soap 扩展

linux - 如何在基于 rhel fedora 的 Amazon EC2 实例上安装 Octave?

c - 共享库函数针对不同进程加载在不同物理地址

linux - 为文件夹中的文件创建新的符号链接(symbolic link)

linux - grep 报告生成模式的出现次数