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












  • Did my answer help? Please feel free to drop a comment if you need more clarification.
    – Wiktor Stribiżew
    Nov 28 '18 at 9:10
















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












  • Did my answer help? Please feel free to drop a comment if you need more clarification.
    – Wiktor Stribiżew
    Nov 28 '18 at 9:10














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

308k16126202




308k16126202










asked Nov 23 '18 at 7:39









Aldrene Gwapo

214




214












  • 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












  • Did my answer help? Please feel free to drop a comment if you need more clarification.
    – Wiktor Stribiżew
    Nov 28 '18 at 9:10


















  • 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












  • Did my answer help? Please feel free to drop a comment if you need more clarification.
    – Wiktor Stribiżew
    Nov 28 '18 at 9:10
















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














Did my answer help? Please feel free to drop a comment if you need more clarification.
– Wiktor Stribiżew
Nov 28 '18 at 9:10




Did my answer help? Please feel free to drop a comment if you need more clarification.
– Wiktor Stribiżew
Nov 28 '18 at 9:10












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żew

          308k16126202




          308k16126202

























              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 Brown

                  18.1k31635




                  18.1k31635






























                      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.





                      Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                      Please pay close attention to the following guidance:


                      • 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

                      What visual should I use to simply compare current year value vs last year in Power BI desktop

                      How to ignore python UserWarning in pytest?

                      Alexandru Averescu