grep的问题,如何过滤几种types的模式?

我是控制台新手。 据我所知,匹配这样的多个模式:

aaa|bbb 

但是,| 字符是在控制台上的pipe道,所以我怎么能指定这些多个模式的grep

你可以逃避pipe道,并把模式引号:

 grep "aaa\|bbb" 

或使用-E

 grep -E "aaa|bbb" 

要么

 grep -E aaa\|bbb 

在你的模式之间egrep "toto|name" ,比如egrep "toto|name"

或者你去

 grep -ie aaa -ie bbb filename 

在文件名中grep for aaa或bbb,不区分大小写。

最后,你可以把你的模式放到一个文件中,并使用-f标志。 所以grep -f patternlist.txt files 。 patternlist.txt简单地说就是:

  AAA
 BBB 

确保没有空行,但。

– 克里斯托弗·卡雷尔

用单引号括起你的模式:

 grep -E 'aaa|bbb' 

如果你的模式包括一个撇号,把它用双引号括起来:

 grep -E "its|it's" 

如果它包含单引号和双引号,则将其用双引号括起来,并用反斜线前缀字符$`\

 grep -E "its|it's|letter \"e\"|pay \$20|\`a'|C:\\\\AUTOEXEC\\.BAT" 

C:\AUTOEXEC.BAT的最后一个例子考虑到反斜杠对于egrep的shell和正则expression式语法都是特殊的。

PS: bash的引用页面是必读的。

egrep "aaa|bbb|ccc" <file>

将在文件中find所有具有aaa或bbb或ccc的行

egrep -i "aaa|bbb|ccc" <file>

将findaaaaaAaaaaaaaaaAAaAAA或…并且对于pipe道之间所列举的每个其他string都是相同的| 字符。