我有一个这样的文本输入:
TOKEN=32141234134143
ERROR=this is an error
上面两行不会同时出现。即 TOKEN 或 ERROR 之一,但不能两者兼而有之。
我grep
像这样使用上面的输入:
cat input |grep TOKEN
如果有错误,则不会输出任何内容。我想要的是,无论文本是什么,grep 只匹配正则表达式,但是不是过滤文本,如果未找到匹配 grep 仅返回非零退出代码。
这可能吗,或者有其他命令行工具可以做到这一点吗?
编辑:我希望 grep 的输出是全部输入文本,包括不匹配的行,不是NONE 文本,由-q
grep 选项给出。
答案1
听起来像是一份工作ack
(使用直通模式):
ack --passthru TOKEN input
或者,取决于您的发行版
ack-grep --passthru --color TOKEN input
将打印整个输入,突出显示匹配项,1
如果未找到匹配项(0
如果找到)则退出。
答案2
简单地:
grep -q TOKEN file && cat file
的是-q
grep
安静的模式。如果找到该模式,cat
则输出文件的完整内容。