代码之家  ›  专栏  ›  技术社区  ›  kurtgn

grep:构造一个regex模式以排除几个组

  •  0
  • kurtgn  · 技术社区  · 6 年前

    我有一个文件夹,其中有三个文件:

    $ ls
    
    aaa.txt abc.txt def.txt
    

    如果我想增加输出,不包括 abc.txt 我可以做的文件:

    $ ls | grep -v 'abc'
    
    aaa.txt
    def.txt
    

    如果要排除两个文件,可以执行以下操作:

    $ ls | grep -v 'abc' | grep -v 'def'
    
    aaa.txt
    

    但是我怎样才能用一个regex和一个regex grep 调用?

    这不起作用:

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

    这也不是:

    $ ls | grep -v "abc|def"
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Inian    6 年前

    使用ere(扩展正则表达式)模式进行交替匹配 | 在BRE中,默认情况下未启用 grep 默认情况下使用)

    grep -vE "abc|def"
    

    或使用扩展 格雷普 ,即 egrep 默认情况下启用ERE

    egrep -v "abc|def"