Why does grep -x imply parenthesizing the pattern?
While answering another question, I quoted man grep
, in relation to -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 $.
I already knew that -x
was like "surrounding [the regex] with ^
and $
", but why does it also imply "parenthesizing the pattern"?
I can't think of why parenthesizing would be necessary, or even change anything. If the whole pattern were parenthesized, you couldn't refer to it internally with a capturing group. grep
complains about trailing backslashes, so there's no odd behaviour from an appended )
either (nor would I expect that to be in the spirit of an option).
Why does man grep
specifically mention parenthesizing the pattern
for -x
?
grep
add a comment |
While answering another question, I quoted man grep
, in relation to -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 $.
I already knew that -x
was like "surrounding [the regex] with ^
and $
", but why does it also imply "parenthesizing the pattern"?
I can't think of why parenthesizing would be necessary, or even change anything. If the whole pattern were parenthesized, you couldn't refer to it internally with a capturing group. grep
complains about trailing backslashes, so there's no odd behaviour from an appended )
either (nor would I expect that to be in the spirit of an option).
Why does man grep
specifically mention parenthesizing the pattern
for -x
?
grep
add a comment |
While answering another question, I quoted man grep
, in relation to -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 $.
I already knew that -x
was like "surrounding [the regex] with ^
and $
", but why does it also imply "parenthesizing the pattern"?
I can't think of why parenthesizing would be necessary, or even change anything. If the whole pattern were parenthesized, you couldn't refer to it internally with a capturing group. grep
complains about trailing backslashes, so there's no odd behaviour from an appended )
either (nor would I expect that to be in the spirit of an option).
Why does man grep
specifically mention parenthesizing the pattern
for -x
?
grep
While answering another question, I quoted man grep
, in relation to -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 $.
I already knew that -x
was like "surrounding [the regex] with ^
and $
", but why does it also imply "parenthesizing the pattern"?
I can't think of why parenthesizing would be necessary, or even change anything. If the whole pattern were parenthesized, you couldn't refer to it internally with a capturing group. grep
complains about trailing backslashes, so there's no odd behaviour from an appended )
either (nor would I expect that to be in the spirit of an option).
Why does man grep
specifically mention parenthesizing the pattern
for -x
?
grep
grep
asked Feb 14 at 10:14
SparhawkSparhawk
10.1k64397
10.1k64397
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
One instance where it’s important is for regular expressions with alternatives:
grep -E 'this|that'
If you only add ^
and $
without parenthesizing, this becomes
grep -E '^this|that$'
which matches lines starting with “this” or ending with “that”, rather than lines containing only “this” or “that”.
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "106"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f500585%2fwhy-does-grep-x-imply-parenthesizing-the-pattern%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
One instance where it’s important is for regular expressions with alternatives:
grep -E 'this|that'
If you only add ^
and $
without parenthesizing, this becomes
grep -E '^this|that$'
which matches lines starting with “this” or ending with “that”, rather than lines containing only “this” or “that”.
add a comment |
One instance where it’s important is for regular expressions with alternatives:
grep -E 'this|that'
If you only add ^
and $
without parenthesizing, this becomes
grep -E '^this|that$'
which matches lines starting with “this” or ending with “that”, rather than lines containing only “this” or “that”.
add a comment |
One instance where it’s important is for regular expressions with alternatives:
grep -E 'this|that'
If you only add ^
and $
without parenthesizing, this becomes
grep -E '^this|that$'
which matches lines starting with “this” or ending with “that”, rather than lines containing only “this” or “that”.
One instance where it’s important is for regular expressions with alternatives:
grep -E 'this|that'
If you only add ^
and $
without parenthesizing, this becomes
grep -E '^this|that$'
which matches lines starting with “this” or ending with “that”, rather than lines containing only “this” or “that”.
answered Feb 14 at 10:17
Stephen KittStephen Kitt
174k24398473
174k24398473
add a comment |
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f500585%2fwhy-does-grep-x-imply-parenthesizing-the-pattern%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown