grep 在“匹配”模式或其他命令?

grep 在“匹配”模式或其他命令?

我有一个这样的文本输入:

TOKEN=32141234134143
ERROR=this is an error

上面两行不会同时出现。即 TOKEN 或 ERROR 之一,但不能两者兼而有之。

grep像这样使用上面的输入:

cat input |grep TOKEN

如果有错误,则不会输出任何内容。我想要的是,无论文本是什么,grep 只匹配正则表达式,但是不是过滤文本,如果未找到匹配 grep 仅返回非零退出代码。

这可能吗,或者有其他命令行工具可以做到这一点吗?

编辑:我希望 grep 的输出是全部输入文本,包括不匹配的行,不是NONE 文本,由-qgrep 选项给出。

答案1

听起来像是一份工作ack(使用直通模式):

ack --passthru TOKEN input

或者,取决于您的发行版

ack-grep --passthru --color TOKEN input

将打印整个输入,突出显示匹配项,1如果未找到匹配项(0如果找到)则退出。

答案2

简单地:

grep -q TOKEN file && cat file       

的是-qgrep安静的模式。如果找到该模式,cat则输出文件的完整内容。

相关内容