为什么 grep -x 暗示将模式括起来?

为什么 grep -x 暗示将模式括起来?

尽管回答我引用的另一个问题man grep-x

-x, --line-regexp
       Select only those matches that exactly match the whole line.
       For a regular expression pattern, this is like parenthesizing
       the pattern and then surrounding it with ^ and $.

我已经知道这-x就像“用^and包围[正则表达式] $”,但为什么它也意味着“将模式括起来”?

我想不出为什么需要括号,甚至无法改变任何东西。如果整个模式都用括号括起来,则无法使用捕获组在内部引用它。grep抱怨尾随反斜杠,因此附加的任何一个都没有奇怪的行为)(我也不希望这符合选项的精神)。

为什么要man grep特别提到parenthesizing the patternfor -x

答案1

对于具有替代项的正则表达式来说,这一点很重要:

grep -E 'this|that'

如果只添加^而不$加括号,就会变成

grep -E '^this|that$'

它匹配以“this”开头或以“that”结尾的行,而不是仅包含“this”或“that”的行。

相关内容