找到' posix-extended'之间的命令regextype差异和' posix-egrep'

时间:2018-02-24 21:39:14

标签: regex shell grep sh

标题真的说明了一切。任何人都可以指出我在哪里可以找到find命令可用的不同正则表达式类型的描述。我能够找到它们的列表,但没有解释或比较。特别是,posix-egrep'之间的区别是什么?并且' posix-extended,'因为egrep是根据扩展集进行正则表达式匹配的工具吗?

2 个答案:

答案 0 :(得分:1)

让我通过向您介绍如何使用linux的文档自我回答这样的问题,向您展示我如何找到信息。

  1. 我通过搜索关键字man find来运行regular以查看正则表达式类型的一些基本信息,然后我会看到:
  2.   

    -regextype type

         

    更改-regex和-iregex测试所理解的正则表达式语法,这些语法稍后会出现在命令行中。要查看已知的正则表达式类型,请使用                 -regextype帮助。 Texinfo文档(参见另请参阅)解释了各种类型的正则表达式的含义和差异。

    假设这是您正在寻找的,那么该文档会在Texinfo中说明,所以我会采取下一步措施;

    1. 运行info find。然后搜索regextype以找到正确的部分。然后我到达了:
    2.   

      ' - regextype'

           

      此选项可更改正则表达式语法和行为        由' - 正则表达式'使用选项。 *注意正则表达式::了解更多信息        关于GNU理解的正则表达方言的信息        的findutils。

      它要求参考名为 note正则表达式的进一步文档,您可以通过在光标上点击输入来到那里。

      1. 万岁!
      2.   
            
        • 菜单:

        •   
        • findutils-default正则表达式语法::

        •   
        • awk正则表达式语法::

        •   
        • egrep正则表达式语法::

        •   
        • emacs正则表达式语法::

        •   
        • gnu-awk正则表达式语法::

        •   
        • grep正则表达式语法::

        •   
        • posix-awk正则表达式语法::

        •   
        • posix-basic正则表达式语法::

        •   
        • posix-egrep正则表达式语法::

        •   
        • posix-extended正则表达式语法::

        •   

        最后两项正是您的要求。阅读它们,然后您就可以发现系统已经为您提供了正确的答案。

答案 1 :(得分:0)

根据信息文档,它们非常相似,但有以下区别:

posix-egrep

字符“。”匹配任何单个字符。

字符“ *”,“ +”和“?”在正则表达式的任何地方都是特殊的。

间隔由'{'和'}'指定。无效的间隔被视为文字,例如'a {1'被视为'a {1'

posix-extended

字符“。”匹配除空字符以外的任何单个字符。

'*','+'和'?'在正则表达式的任何地方都是特殊的 除了以下不允许的地方:

  1. 在正则表达式的开头
  2. 在开放小组之后,以“(”
  3. 表示
  4. 交替运算符'|'
  5. 之后

间隔由'{'和'}'指定。无效的时间间隔,例如 'a {1z'不被接受。