Print 1st column of 1st row and 2nd column of last row, where last column has same value
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
New contributor
add a comment |
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
New contributor
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
add a comment |
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
New contributor
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
bash shell-script text-processing
New contributor
New contributor
edited 10 mins ago
PRY
2,55831026
2,55831026
New contributor
asked 2 hours ago
aaaaaa
1
1
New contributor
New contributor
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
add a comment |
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
add a comment |
2 Answers
2
active
oldest
votes
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
add a comment |
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
.
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
});
}
});
aaa is a new contributor. Be nice, and check out our Code of Conduct.
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%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
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
add a comment |
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
add a comment |
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
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
edited 24 mins ago
answered 38 mins ago
chorobachoroba
26.7k44975
26.7k44975
add a comment |
add a comment |
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
.
add a comment |
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
.
add a comment |
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
.
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
.
edited 8 mins ago
answered 20 mins ago
PRYPRY
2,55831026
2,55831026
add a comment |
add a comment |
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.
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.
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%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
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
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