2014-06-23 80 views
1

我如何在grep中找到這種模式?如何在shell腳本中使用grep查找此模式?

1.1.1.1 (everything) testString (everything) 

我意味着我需要一個搜索,可以找到TestString是否有在每個這種情況下:

1.1.1.1 test1 testString test2 
1.1.1.1 test1 test2 testString 
1.1.1.1 testString test1 test2 

的話,我怎麼能得到grep的結果中的「假表「(找不到)或」真「(找到它),以便將結果傳遞給shell腳本中的if子句?

+0

後一個例子。 –

+3

'grep -q'^ 1 \ .1 \ .1 \ .1。* testString'file',然後讀取'$?'。如果'1',找不到。找到'0'。 – Kent

+0

它會匹配這三種情況下的所有人嗎?如果「。*」代表所有內容,它就不會像grep'^ 1 \ .1 \ .1 \ .1。* testString'。*文件那樣更完整。 –

回答

0

你的問題不是很清楚。您是否在尋找testString1.1.1.1其次是testString

假定第二種情況,假設你在從文件中讀取:

while read line; do 
    echo $line | grep -q '1\.1\.1\.1.*testString' && echo found || echo not found 
done < filename.txt 
+0

不會打印n找到/找不到,如果文件有n行? – Kent

+0

將模式置於引號中,否則有可能導致路徑名擴展('*')。並且更喜歡到處引用引號,即使對於'$ line',儘管在這種情況下它可能是無害的。 –

+0

@Kent - 不明白...我認爲你的問題的答案是肯定的,是不是要求什麼? – arco444