How to Grep more than one line to get all the thread content












2















How to Grep more than one line to get all the lines under that thread.
I already tried grep -A,-B,-C , but that seems to get more than or sometimes less than what i need.



$cat text.txt
=====================================================================
[11-23-18 10:07:01:119]::Thread(ABC):request returned

[11-23-18 10:07:01:120]::Thread(ABC):Sending packet 'POST /aq/ConManager HTTP/1.1
Host: localhost:192.168.1.1
User-Agent: gSOAP/2.7
Content-Type: text/xml; charset=utf-8
Content-Length: 1149
Connection: keep-alive
Accept-Encoding: gzip, deflate
SOAPAction: ""

[11-23-18 10:07:01:121]::Thread(XYZ): doing request

[11-23-18 10:07:01:122]::Thread(XYZ): request returned

================================================================


Now, if I use grep -A 10 ABC text.txt, it will output all other lines like thread XYZ. Wherein I only want to output all ABC thread and it's lines.And If I use only grep it will not output succeeding lines after the ABC thread.










share|improve this question

























  • Use the {} button in the question editor to format data and code, Also, please add the expected output for the sample data.

    – James Brown
    Nov 23 '18 at 7:45


















2















How to Grep more than one line to get all the lines under that thread.
I already tried grep -A,-B,-C , but that seems to get more than or sometimes less than what i need.



$cat text.txt
=====================================================================
[11-23-18 10:07:01:119]::Thread(ABC):request returned

[11-23-18 10:07:01:120]::Thread(ABC):Sending packet 'POST /aq/ConManager HTTP/1.1
Host: localhost:192.168.1.1
User-Agent: gSOAP/2.7
Content-Type: text/xml; charset=utf-8
Content-Length: 1149
Connection: keep-alive
Accept-Encoding: gzip, deflate
SOAPAction: ""

[11-23-18 10:07:01:121]::Thread(XYZ): doing request

[11-23-18 10:07:01:122]::Thread(XYZ): request returned

================================================================


Now, if I use grep -A 10 ABC text.txt, it will output all other lines like thread XYZ. Wherein I only want to output all ABC thread and it's lines.And If I use only grep it will not output succeeding lines after the ABC thread.










share|improve this question

























  • Use the {} button in the question editor to format data and code, Also, please add the expected output for the sample data.

    – James Brown
    Nov 23 '18 at 7:45
















2












2








2








How to Grep more than one line to get all the lines under that thread.
I already tried grep -A,-B,-C , but that seems to get more than or sometimes less than what i need.



$cat text.txt
=====================================================================
[11-23-18 10:07:01:119]::Thread(ABC):request returned

[11-23-18 10:07:01:120]::Thread(ABC):Sending packet 'POST /aq/ConManager HTTP/1.1
Host: localhost:192.168.1.1
User-Agent: gSOAP/2.7
Content-Type: text/xml; charset=utf-8
Content-Length: 1149
Connection: keep-alive
Accept-Encoding: gzip, deflate
SOAPAction: ""

[11-23-18 10:07:01:121]::Thread(XYZ): doing request

[11-23-18 10:07:01:122]::Thread(XYZ): request returned

================================================================


Now, if I use grep -A 10 ABC text.txt, it will output all other lines like thread XYZ. Wherein I only want to output all ABC thread and it's lines.And If I use only grep it will not output succeeding lines after the ABC thread.










share|improve this question
















How to Grep more than one line to get all the lines under that thread.
I already tried grep -A,-B,-C , but that seems to get more than or sometimes less than what i need.



$cat text.txt
=====================================================================
[11-23-18 10:07:01:119]::Thread(ABC):request returned

[11-23-18 10:07:01:120]::Thread(ABC):Sending packet 'POST /aq/ConManager HTTP/1.1
Host: localhost:192.168.1.1
User-Agent: gSOAP/2.7
Content-Type: text/xml; charset=utf-8
Content-Length: 1149
Connection: keep-alive
Accept-Encoding: gzip, deflate
SOAPAction: ""

[11-23-18 10:07:01:121]::Thread(XYZ): doing request

[11-23-18 10:07:01:122]::Thread(XYZ): request returned

================================================================


Now, if I use grep -A 10 ABC text.txt, it will output all other lines like thread XYZ. Wherein I only want to output all ABC thread and it's lines.And If I use only grep it will not output succeeding lines after the ABC thread.







regex unix grep






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 23 '18 at 9:03









Wiktor Stribiżew

326k16146226




326k16146226










asked Nov 23 '18 at 7:39









Aldrene GwapoAldrene Gwapo

234




234













  • Use the {} button in the question editor to format data and code, Also, please add the expected output for the sample data.

    – James Brown
    Nov 23 '18 at 7:45





















  • Use the {} button in the question editor to format data and code, Also, please add the expected output for the sample data.

    – James Brown
    Nov 23 '18 at 7:45



















Use the {} button in the question editor to format data and code, Also, please add the expected output for the sample data.

– James Brown
Nov 23 '18 at 7:45







Use the {} button in the question editor to format data and code, Also, please add the expected output for the sample data.

– James Brown
Nov 23 '18 at 7:45














2 Answers
2






active

oldest

votes


















1














You may use



awk '/^[[^]*]::Thread(ABC)/,/^$/' file > newfile


It matches a block of lines between two patterns, the second one matches an empty line and the first one matches:





  • ^ - start of a line


  • [ - a [


  • [^]* - 0+ chars other than [ and ]


  • ] - a ]


  • ::Thread(ABC) - a ::Thread(ABC) substring


See the online demo.






share|improve this answer































    1














    Here is one that may or may not be what you were looking for:



    $ awk -v RS="" '/ABC/' file


    Output:



    =====================================================================
    [11-23-18 10:07:01:119]::Thread(ABC):request returned
    [11-23-18 10:07:01:120]::Thread(ABC):Sending packet 'POST /aq/ConManager HTTP/1.1
    Host: localhost:192.168.1.1
    User-Agent: gSOAP/2.7
    Content-Type: text/xml; charset=utf-8
    Content-Length: 1149
    Connection: keep-alive
    Accept-Encoding: gzip, deflate
    SOAPAction: ""


    Explained:



    $ awk -v RS="" '  # use empty records as record separators
    /ABC/ # if there is ABC in the record, print it
    ' file





    share|improve this answer























      Your Answer






      StackExchange.ifUsing("editor", function () {
      StackExchange.using("externalEditor", function () {
      StackExchange.using("snippets", function () {
      StackExchange.snippets.init();
      });
      });
      }, "code-snippets");

      StackExchange.ready(function() {
      var channelOptions = {
      tags: "".split(" "),
      id: "1"
      };
      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: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      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%2fstackoverflow.com%2fquestions%2f53442470%2fhow-to-grep-more-than-one-line-to-get-all-the-thread-content%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      1














      You may use



      awk '/^[[^]*]::Thread(ABC)/,/^$/' file > newfile


      It matches a block of lines between two patterns, the second one matches an empty line and the first one matches:





      • ^ - start of a line


      • [ - a [


      • [^]* - 0+ chars other than [ and ]


      • ] - a ]


      • ::Thread(ABC) - a ::Thread(ABC) substring


      See the online demo.






      share|improve this answer




























        1














        You may use



        awk '/^[[^]*]::Thread(ABC)/,/^$/' file > newfile


        It matches a block of lines between two patterns, the second one matches an empty line and the first one matches:





        • ^ - start of a line


        • [ - a [


        • [^]* - 0+ chars other than [ and ]


        • ] - a ]


        • ::Thread(ABC) - a ::Thread(ABC) substring


        See the online demo.






        share|improve this answer


























          1












          1








          1







          You may use



          awk '/^[[^]*]::Thread(ABC)/,/^$/' file > newfile


          It matches a block of lines between two patterns, the second one matches an empty line and the first one matches:





          • ^ - start of a line


          • [ - a [


          • [^]* - 0+ chars other than [ and ]


          • ] - a ]


          • ::Thread(ABC) - a ::Thread(ABC) substring


          See the online demo.






          share|improve this answer













          You may use



          awk '/^[[^]*]::Thread(ABC)/,/^$/' file > newfile


          It matches a block of lines between two patterns, the second one matches an empty line and the first one matches:





          • ^ - start of a line


          • [ - a [


          • [^]* - 0+ chars other than [ and ]


          • ] - a ]


          • ::Thread(ABC) - a ::Thread(ABC) substring


          See the online demo.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 23 '18 at 9:03









          Wiktor StribiżewWiktor Stribiżew

          326k16146226




          326k16146226

























              1














              Here is one that may or may not be what you were looking for:



              $ awk -v RS="" '/ABC/' file


              Output:



              =====================================================================
              [11-23-18 10:07:01:119]::Thread(ABC):request returned
              [11-23-18 10:07:01:120]::Thread(ABC):Sending packet 'POST /aq/ConManager HTTP/1.1
              Host: localhost:192.168.1.1
              User-Agent: gSOAP/2.7
              Content-Type: text/xml; charset=utf-8
              Content-Length: 1149
              Connection: keep-alive
              Accept-Encoding: gzip, deflate
              SOAPAction: ""


              Explained:



              $ awk -v RS="" '  # use empty records as record separators
              /ABC/ # if there is ABC in the record, print it
              ' file





              share|improve this answer




























                1














                Here is one that may or may not be what you were looking for:



                $ awk -v RS="" '/ABC/' file


                Output:



                =====================================================================
                [11-23-18 10:07:01:119]::Thread(ABC):request returned
                [11-23-18 10:07:01:120]::Thread(ABC):Sending packet 'POST /aq/ConManager HTTP/1.1
                Host: localhost:192.168.1.1
                User-Agent: gSOAP/2.7
                Content-Type: text/xml; charset=utf-8
                Content-Length: 1149
                Connection: keep-alive
                Accept-Encoding: gzip, deflate
                SOAPAction: ""


                Explained:



                $ awk -v RS="" '  # use empty records as record separators
                /ABC/ # if there is ABC in the record, print it
                ' file





                share|improve this answer


























                  1












                  1








                  1







                  Here is one that may or may not be what you were looking for:



                  $ awk -v RS="" '/ABC/' file


                  Output:



                  =====================================================================
                  [11-23-18 10:07:01:119]::Thread(ABC):request returned
                  [11-23-18 10:07:01:120]::Thread(ABC):Sending packet 'POST /aq/ConManager HTTP/1.1
                  Host: localhost:192.168.1.1
                  User-Agent: gSOAP/2.7
                  Content-Type: text/xml; charset=utf-8
                  Content-Length: 1149
                  Connection: keep-alive
                  Accept-Encoding: gzip, deflate
                  SOAPAction: ""


                  Explained:



                  $ awk -v RS="" '  # use empty records as record separators
                  /ABC/ # if there is ABC in the record, print it
                  ' file





                  share|improve this answer













                  Here is one that may or may not be what you were looking for:



                  $ awk -v RS="" '/ABC/' file


                  Output:



                  =====================================================================
                  [11-23-18 10:07:01:119]::Thread(ABC):request returned
                  [11-23-18 10:07:01:120]::Thread(ABC):Sending packet 'POST /aq/ConManager HTTP/1.1
                  Host: localhost:192.168.1.1
                  User-Agent: gSOAP/2.7
                  Content-Type: text/xml; charset=utf-8
                  Content-Length: 1149
                  Connection: keep-alive
                  Accept-Encoding: gzip, deflate
                  SOAPAction: ""


                  Explained:



                  $ awk -v RS="" '  # use empty records as record separators
                  /ABC/ # if there is ABC in the record, print it
                  ' file






                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 23 '18 at 9:37









                  James BrownJames Brown

                  20.1k42037




                  20.1k42037






























                      draft saved

                      draft discarded




















































                      Thanks for contributing an answer to Stack Overflow!


                      • 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%2fstackoverflow.com%2fquestions%2f53442470%2fhow-to-grep-more-than-one-line-to-get-all-the-thread-content%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

                      If I really need a card on my start hand, how many mulligans make sense? [duplicate]

                      Alcedinidae

                      Can an atomic nucleus contain both particles and antiparticles? [duplicate]