我一个管道命令egrep的,我使用,以确保特定的故障字符串没有出现在其中的一些输出。grep的显示所有行,而不仅仅是匹配,设置退出状态
的不幸的是,命令本身在失败时不会返回适当的非零退出状态,这就是我这样做的原因。
command | egrep -i -v "badpattern"
以此为据可以作为给我的退出代码我要(1如果badpattern在输出中出现,否则为0),但是,它只会不匹配模式输出线(如-v开关被设计来做)。为了我的需要,这些线条是最有趣的线条。
有没有办法让grep只是盲目地通过全部作为输入得到的代码行,只要给我适当的退出代码?
如果没有,我想我可以使用perl -ne“print;如果/ badpattern /出口1”。我使用-n而不是-p,因为-p不会打印违规行(因为它在运行单行程后打印)。所以,我用-n和调用print
自己,这至少给我的第一个问题的行,但随后输出(和执行)停在那里,所以我不得不这样做
perl -e '$code = 0; while (<>) { print; $code = 1 if /badpattern/; } exit $code'
这做了整个交易,但有点多,有没有一个简单的命令行开关的grep,只会做我在找什么?
很酷,至少比我的perl one liner还短。 – hsiu 2011-05-27 13:25:15