Print 1st column of 1st row and 2nd column of last row, where last column has same value












0















Input:



0.016   0.032   1  
0.032 0.048 1
0.048 0.064 1
0.064 0.08 1
0.08 0.096 1
0.096 0.112 1
0.112 0.128 0
0.128 0.144 0
0.144 0.16 0
0.16 0.176 0
0.176 0.192 0
0.192 0.208 0


Desired output:



0.016 0.112 1  
0.112 0.208 0









share|improve this question









New contributor




aaa is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
















  • 3





    What have you tried? How did it fail? It's unclear how you would like to rearrange the file, please try to describe it in other words.

    – choroba
    1 hour ago











  • It tried using awk and keeping the first column and the last. I think looking at input and the desired output makes it quite clear

    – aaa
    1 hour ago
















0















Input:



0.016   0.032   1  
0.032 0.048 1
0.048 0.064 1
0.064 0.08 1
0.08 0.096 1
0.096 0.112 1
0.112 0.128 0
0.128 0.144 0
0.144 0.16 0
0.16 0.176 0
0.176 0.192 0
0.192 0.208 0


Desired output:



0.016 0.112 1  
0.112 0.208 0









share|improve this question









New contributor




aaa is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
















  • 3





    What have you tried? How did it fail? It's unclear how you would like to rearrange the file, please try to describe it in other words.

    – choroba
    1 hour ago











  • It tried using awk and keeping the first column and the last. I think looking at input and the desired output makes it quite clear

    – aaa
    1 hour ago














0












0








0








Input:



0.016   0.032   1  
0.032 0.048 1
0.048 0.064 1
0.064 0.08 1
0.08 0.096 1
0.096 0.112 1
0.112 0.128 0
0.128 0.144 0
0.144 0.16 0
0.16 0.176 0
0.176 0.192 0
0.192 0.208 0


Desired output:



0.016 0.112 1  
0.112 0.208 0









share|improve this question









New contributor




aaa is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.












Input:



0.016   0.032   1  
0.032 0.048 1
0.048 0.064 1
0.064 0.08 1
0.08 0.096 1
0.096 0.112 1
0.112 0.128 0
0.128 0.144 0
0.144 0.16 0
0.16 0.176 0
0.176 0.192 0
0.192 0.208 0


Desired output:



0.016 0.112 1  
0.112 0.208 0






bash shell-script text-processing






share|improve this question









New contributor




aaa is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question









New contributor




aaa is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question








edited 10 mins ago









PRY

2,55831026




2,55831026






New contributor




aaa is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked 2 hours ago









aaaaaa

1




1




New contributor




aaa is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





aaa is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






aaa is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.








  • 3





    What have you tried? How did it fail? It's unclear how you would like to rearrange the file, please try to describe it in other words.

    – choroba
    1 hour ago











  • It tried using awk and keeping the first column and the last. I think looking at input and the desired output makes it quite clear

    – aaa
    1 hour ago














  • 3





    What have you tried? How did it fail? It's unclear how you would like to rearrange the file, please try to describe it in other words.

    – choroba
    1 hour ago











  • It tried using awk and keeping the first column and the last. I think looking at input and the desired output makes it quite clear

    – aaa
    1 hour ago








3




3





What have you tried? How did it fail? It's unclear how you would like to rearrange the file, please try to describe it in other words.

– choroba
1 hour ago





What have you tried? How did it fail? It's unclear how you would like to rearrange the file, please try to describe it in other words.

– choroba
1 hour ago













It tried using awk and keeping the first column and the last. I think looking at input and the desired output makes it quite clear

– aaa
1 hour ago





It tried using awk and keeping the first column and the last. I think looking at input and the desired output makes it quite clear

– aaa
1 hour ago










2 Answers
2






active

oldest

votes


















0














Perl to the rescue!



perl -ane '
sub out { print "@_n" }
if ($F[2] != $three) {
out($one, $two, $three) if defined $one;
($one, $three) = @F[0, 2];
}
$two = $F[1];
END { out($one, $two, $three) }
' < input > output




  • -n reads the input line by line and runs the code for each line;


  • -a splits each line into the @F array on whitespace;

  • the if defined $one skips outputing the first line (it's third column is different to the previous one, but there's nothing to output yet);

  • the END block is needed to print the final block






share|improve this answer

































    0














    I did it using awk:



    awk 'BEGIN{f=0;OFS=" ";t=0;}  {if(f == 0 && $3 == 1) {ff=$1;f=1;next} if(f==1 && $3 == 1) {r=$2;}
    if(t == 0 && $3 == 0) {print ff,r,1;ff=$1;t=1;next} if(t==1 && $3 == 0) {r=$2;}} END{print ff,r,0}' file


    It seems large but approach is simple, check if last column is 1 or 0, and then print 1st column of 1st line and 2nd column of last line.



    Shorter Version:



    awk 'BEGIN{f=0;OFS=" ";t=0;}  {if($3 == 1) {if(f==0){ff=$1;f=1;next} else{r=$2;}}
    else{if(t==0){print ff,r,1;ff=$1;t=1;next} else{r=$2;}}} END{print ff,r,0}' file


    Initially f and t has value 0, then for the first time $3==0 then ff will be equal to first column and f=1, and for further lines we will take r=$2. Similarly for $3==0.






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


      }
      });






      aaa is a new contributor. Be nice, and check out our Code of Conduct.










      draft saved

      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f503484%2fprint-1st-column-of-1st-row-and-2nd-column-of-last-row-where-last-column-has-sa%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









      0














      Perl to the rescue!



      perl -ane '
      sub out { print "@_n" }
      if ($F[2] != $three) {
      out($one, $two, $three) if defined $one;
      ($one, $three) = @F[0, 2];
      }
      $two = $F[1];
      END { out($one, $two, $three) }
      ' < input > output




      • -n reads the input line by line and runs the code for each line;


      • -a splits each line into the @F array on whitespace;

      • the if defined $one skips outputing the first line (it's third column is different to the previous one, but there's nothing to output yet);

      • the END block is needed to print the final block






      share|improve this answer






























        0














        Perl to the rescue!



        perl -ane '
        sub out { print "@_n" }
        if ($F[2] != $three) {
        out($one, $two, $three) if defined $one;
        ($one, $three) = @F[0, 2];
        }
        $two = $F[1];
        END { out($one, $two, $three) }
        ' < input > output




        • -n reads the input line by line and runs the code for each line;


        • -a splits each line into the @F array on whitespace;

        • the if defined $one skips outputing the first line (it's third column is different to the previous one, but there's nothing to output yet);

        • the END block is needed to print the final block






        share|improve this answer




























          0












          0








          0







          Perl to the rescue!



          perl -ane '
          sub out { print "@_n" }
          if ($F[2] != $three) {
          out($one, $two, $three) if defined $one;
          ($one, $three) = @F[0, 2];
          }
          $two = $F[1];
          END { out($one, $two, $three) }
          ' < input > output




          • -n reads the input line by line and runs the code for each line;


          • -a splits each line into the @F array on whitespace;

          • the if defined $one skips outputing the first line (it's third column is different to the previous one, but there's nothing to output yet);

          • the END block is needed to print the final block






          share|improve this answer















          Perl to the rescue!



          perl -ane '
          sub out { print "@_n" }
          if ($F[2] != $three) {
          out($one, $two, $three) if defined $one;
          ($one, $three) = @F[0, 2];
          }
          $two = $F[1];
          END { out($one, $two, $three) }
          ' < input > output




          • -n reads the input line by line and runs the code for each line;


          • -a splits each line into the @F array on whitespace;

          • the if defined $one skips outputing the first line (it's third column is different to the previous one, but there's nothing to output yet);

          • the END block is needed to print the final block







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited 24 mins ago

























          answered 38 mins ago









          chorobachoroba

          26.7k44975




          26.7k44975

























              0














              I did it using awk:



              awk 'BEGIN{f=0;OFS=" ";t=0;}  {if(f == 0 && $3 == 1) {ff=$1;f=1;next} if(f==1 && $3 == 1) {r=$2;}
              if(t == 0 && $3 == 0) {print ff,r,1;ff=$1;t=1;next} if(t==1 && $3 == 0) {r=$2;}} END{print ff,r,0}' file


              It seems large but approach is simple, check if last column is 1 or 0, and then print 1st column of 1st line and 2nd column of last line.



              Shorter Version:



              awk 'BEGIN{f=0;OFS=" ";t=0;}  {if($3 == 1) {if(f==0){ff=$1;f=1;next} else{r=$2;}}
              else{if(t==0){print ff,r,1;ff=$1;t=1;next} else{r=$2;}}} END{print ff,r,0}' file


              Initially f and t has value 0, then for the first time $3==0 then ff will be equal to first column and f=1, and for further lines we will take r=$2. Similarly for $3==0.






              share|improve this answer






























                0














                I did it using awk:



                awk 'BEGIN{f=0;OFS=" ";t=0;}  {if(f == 0 && $3 == 1) {ff=$1;f=1;next} if(f==1 && $3 == 1) {r=$2;}
                if(t == 0 && $3 == 0) {print ff,r,1;ff=$1;t=1;next} if(t==1 && $3 == 0) {r=$2;}} END{print ff,r,0}' file


                It seems large but approach is simple, check if last column is 1 or 0, and then print 1st column of 1st line and 2nd column of last line.



                Shorter Version:



                awk 'BEGIN{f=0;OFS=" ";t=0;}  {if($3 == 1) {if(f==0){ff=$1;f=1;next} else{r=$2;}}
                else{if(t==0){print ff,r,1;ff=$1;t=1;next} else{r=$2;}}} END{print ff,r,0}' file


                Initially f and t has value 0, then for the first time $3==0 then ff will be equal to first column and f=1, and for further lines we will take r=$2. Similarly for $3==0.






                share|improve this answer




























                  0












                  0








                  0







                  I did it using awk:



                  awk 'BEGIN{f=0;OFS=" ";t=0;}  {if(f == 0 && $3 == 1) {ff=$1;f=1;next} if(f==1 && $3 == 1) {r=$2;}
                  if(t == 0 && $3 == 0) {print ff,r,1;ff=$1;t=1;next} if(t==1 && $3 == 0) {r=$2;}} END{print ff,r,0}' file


                  It seems large but approach is simple, check if last column is 1 or 0, and then print 1st column of 1st line and 2nd column of last line.



                  Shorter Version:



                  awk 'BEGIN{f=0;OFS=" ";t=0;}  {if($3 == 1) {if(f==0){ff=$1;f=1;next} else{r=$2;}}
                  else{if(t==0){print ff,r,1;ff=$1;t=1;next} else{r=$2;}}} END{print ff,r,0}' file


                  Initially f and t has value 0, then for the first time $3==0 then ff will be equal to first column and f=1, and for further lines we will take r=$2. Similarly for $3==0.






                  share|improve this answer















                  I did it using awk:



                  awk 'BEGIN{f=0;OFS=" ";t=0;}  {if(f == 0 && $3 == 1) {ff=$1;f=1;next} if(f==1 && $3 == 1) {r=$2;}
                  if(t == 0 && $3 == 0) {print ff,r,1;ff=$1;t=1;next} if(t==1 && $3 == 0) {r=$2;}} END{print ff,r,0}' file


                  It seems large but approach is simple, check if last column is 1 or 0, and then print 1st column of 1st line and 2nd column of last line.



                  Shorter Version:



                  awk 'BEGIN{f=0;OFS=" ";t=0;}  {if($3 == 1) {if(f==0){ff=$1;f=1;next} else{r=$2;}}
                  else{if(t==0){print ff,r,1;ff=$1;t=1;next} else{r=$2;}}} END{print ff,r,0}' file


                  Initially f and t has value 0, then for the first time $3==0 then ff will be equal to first column and f=1, and for further lines we will take r=$2. Similarly for $3==0.







                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited 8 mins ago

























                  answered 20 mins ago









                  PRYPRY

                  2,55831026




                  2,55831026






















                      aaa is a new contributor. Be nice, and check out our Code of Conduct.










                      draft saved

                      draft discarded


















                      aaa is a new contributor. Be nice, and check out our Code of Conduct.













                      aaa is a new contributor. Be nice, and check out our Code of Conduct.












                      aaa is a new contributor. Be nice, and check out our Code of Conduct.
















                      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%2f503484%2fprint-1st-column-of-1st-row-and-2nd-column-of-last-row-where-last-column-has-sa%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

                      Accessing regular linux commands in Huawei's Dopra Linux

                      Can't connect RFCOMM socket: Host is down

                      Kernel panic - not syncing: Fatal Exception in Interrupt