我是控制台新手。 据我所知,匹配这样的多个模式:
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>
将findaaa或aaA或aaa或aaa或aaa或AAa或AAA或…并且对于pipe道之间所列举的每个其他string都是相同的| 字符。