尽管回答我引用的另一个问题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 pattern
for -x
?
答案1
对于具有替代项的正则表达式来说,这一点很重要:
grep -E 'this|that'
如果只添加^
而不$
加括号,就会变成
grep -E '^this|that$'
它匹配以“this”开头或以“that”结尾的行,而不是仅包含“this”或“that”的行。