我一個管道命令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