Why does grep -x imply parenthesizing the pattern?












0















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?










share|improve this question



























    0















    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?










    share|improve this question

























      0












      0








      0








      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?










      share|improve this question














      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






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Feb 14 at 10:14









      SparhawkSparhawk

      10.1k64397




      10.1k64397






















          1 Answer
          1






          active

          oldest

          votes


















          7














          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”.






          share|improve this answer























            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
            });


            }
            });














            draft saved

            draft discarded


















            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









            7














            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”.






            share|improve this answer




























              7














              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”.






              share|improve this answer


























                7












                7








                7







                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”.






                share|improve this answer













                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”.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Feb 14 at 10:17









                Stephen KittStephen Kitt

                174k24398473




                174k24398473






























                    draft saved

                    draft discarded




















































                    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.




                    draft saved


                    draft discarded














                    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





















































                    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







                    Popular posts from this blog

                    How to reconfigure Docker Trusted Registry 2.x.x to use CEPH FS mount instead of NFS and other traditional...

                    is 'sed' thread safe

                    How to make a Squid Proxy server?