2016-11-29 63 views
-1

我有一個bash文件,其中包含一些模式,我想從文本文件中搜索並將匹配模式的整行寫入新文件。grep無停止或回聲「未找到」

grep -P "^AAA," $score >> Pscores.txt && 
grep -P "^BBB," $score >> Pscores.txt && 
grep -P "^CCC," $score >> Pscores.txt && 
grep -P "^DDD," $score >> Pscores.txt && 

然而,在$score沒有BBB,然後在bash已經停止。 我怎樣才能改變它要經過不停止或只是echo BBB not found

+2

只是刪除尾隨''&&。 –

+1

你想存儲他們嗎?因爲否則你可以說'grep -E'^(AAA | BBB | CCC | DDD),''。 – fedorqui

+1

@fedorqui如果它包含多個匹配項,也只會打印1行,而不是每個匹配項重複一次該行,這可能是也可能不是理想的,idk。用戶.. - 你的正則表達式中沒有任何東西需要慢得多的perl兼容正則表達式引擎,所以丟掉'-P'。另外,總是引用你的shell變量(谷歌它)。 –

回答

0

的語法應該有如下:

grep --option 'PATTERN' [FILENAME] >> output_file 

在這裏,我們可以引入一個「;」半可樂將逐條終止請求並提供更好的理解。

所以,你的情況的grep命令會像:

grep -P "^CCC," $score >> Pscores.txt