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

正则表达式问题

  •  3
  • rodnower  · 技术社区  · 16 年前

    也许这是个新手问题,但我必须问!
    一般来说,我理解正则表达式,但我不理解为什么这一个:

    ^.{8}[[:blank:]]{2}
    

    在这条线上工作:

    prelink: /lib/libkeyutils-1.2.so: at least one of file's dependencies has changed since prelinking
    

    在此grep命令中:

    echo "prelink: /lib/libkeyutils-1.2.so: at least one of file's dependencies has changed since prelinking" | grep -v '^.\{8\}[[:blank:]]\{2\}'
    

    在哪里?

    The                says "beggining of line"  
    The .{8}           says "any eight characters"  
    The [[:blank:]]{2} says "any two space characters"  
    

    所以^ 8匹配“预链接:”,当[[:blank:]2需要匹配“”(两个空格),但我们只有“”(一个空格)… 所以为什么这项工作有效,如果这项工作有效,为什么这项工作:

    ^.{8}[[:blank:]]{1} 
    

    不管用吗?

    谢谢你的好意。

    1 回复  |  直到 16 年前
        1
  •  8
  •   Mark Byers    16 年前

    你在用 grep 与 -v 使其打印行的选项 不要 比赛。移除 -V 它会如你所期望的那样工作。

    grep --help
    ...
       -v, --invert-match        select non-matching lines
    ...