Ao responder a outra pergunta, citei man grep
, em relação a-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 $.
Eu já sabia que -x
era como "cercar [o regex] com ^
e $
", mas por que isso também implica "entre parênteses no padrão"?
Não consigo pensar em por que o uso de parênteses seria necessário, ou até mesmo mudaria alguma coisa. Se todo o padrão estivesse entre parênteses, você não poderia se referir a ele internamente com um grupo de captura. grep
reclama sobre barras invertidas à direita, então também não há comportamento estranho de um anexo )
(nem eu esperaria que isso estivesse no espírito de uma opção).
Por que man grep
menciona especificamente parenthesizing the pattern
para -x
?
Uma instância em que é importante é para expressões regulares com alternativas:
Se você adicionar apenas
^
e$
sem parênteses, isso se tornaque corresponde a linhas que começam com “this” ou terminam com “that”, em vez de linhas contendo apenas “this” ou “that”.