grep:构建正则表达式模式以排除多个组

时间:2018-11-20 07:29:24

标签: grep

我有一个包含三个文件的文件夹:

$ ls

aaa.txt abc.txt def.txt

如果我想对除abc.txt文件之外的输出进行grep复制,可以执行以下操作:

$ ls | grep -v 'abc'

aaa.txt
def.txt

如果我想排除两个文件,我可以做:

$ ls | grep -v 'abc' | grep -v 'def'

aaa.txt

但是我该如何使用一个正则表达式和一个grep调用呢?

这不起作用:

$ ls | grep -v '[(abc)(def)]'

这也不是:

$ ls | grep -v "abc|def"

1 个答案:

答案 0 :(得分:1)

将ERE(扩展正则表达式)模式用于交替匹配|,这在BRE中默认未启用(grep默认使用)

grep -vE "abc|def"

或使用扩展的grep,即egrep,默认情况下启用ERE

egrep -v "abc|def"