2016-11-29 94 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