2013-06-21 70 views
0

這基本上就是我想要做的事:如何2次grep的檢查,在一個while循環結合

while string1 is not present in foo.log OR string2 is present in foo.log do 
    echo . 
loop 

輸入文件的例子:

這應該保持運行的同時

string1 
foo 
bar 
string2 

這應該保持運行的同時

foo 
bar 

這應該停止while循環

foo 
bar 
string1 

回答

3

「字符串1中不存在foo.log或字符串2出現在foo.log」應該翻譯成

while ! grep -q "string1" foo.log || grep -q "string2" foo.log; do 
    echo . 
done 
+2

,僅供參考,之所以原'grep -qv'不起作用的是它試圖找到不匹配'string1'的行。只要有一行不匹配'string1',就認爲它是成功的。 –

+0

您的解決方案無法在此工作。該文件可能同時具有兩個字符串,如 string1 string2 foo –

+0

@DiegoPlentz,這裏有點不清楚。你的「string1不存在於foo.log中,並且string2存在於foo.log中」應該一次操作一行或整個文件? – iruvar