How to start a new column after every nth row?
Clash Royale CLAN TAG#URR8PPP
I have a file (comma separated) on a Linux system with 3 columns. I want to start new column after every 4th row.
Input:
col1,col2,col3
1,disease1,high
1,disease2,low
1,disease3,high
col1,col2,col3
2,disease1,low
2,disease2,low
2,disease3,high
col1,col2,col3
3,disease1,low
3,disease2,low
3,disease3,low
Expected output:
col1,col2,col3,col1,col2,col3,col1,col2,col3
1,disease1,high,2,disease1,low,3,disease1,low
1,disease2,low,2,disease2,low,3,disease2,low
1,disease3,high,2,disease3,high,disease3,low
i.e. I want exactly 4 lines of output, each line is the result of joining every fourth line of the input with a comma.
shell text-processing command-line perl
add a comment |
I have a file (comma separated) on a Linux system with 3 columns. I want to start new column after every 4th row.
Input:
col1,col2,col3
1,disease1,high
1,disease2,low
1,disease3,high
col1,col2,col3
2,disease1,low
2,disease2,low
2,disease3,high
col1,col2,col3
3,disease1,low
3,disease2,low
3,disease3,low
Expected output:
col1,col2,col3,col1,col2,col3,col1,col2,col3
1,disease1,high,2,disease1,low,3,disease1,low
1,disease2,low,2,disease2,low,3,disease2,low
1,disease3,high,2,disease3,high,disease3,low
i.e. I want exactly 4 lines of output, each line is the result of joining every fourth line of the input with a comma.
shell text-processing command-line perl
add a comment |
I have a file (comma separated) on a Linux system with 3 columns. I want to start new column after every 4th row.
Input:
col1,col2,col3
1,disease1,high
1,disease2,low
1,disease3,high
col1,col2,col3
2,disease1,low
2,disease2,low
2,disease3,high
col1,col2,col3
3,disease1,low
3,disease2,low
3,disease3,low
Expected output:
col1,col2,col3,col1,col2,col3,col1,col2,col3
1,disease1,high,2,disease1,low,3,disease1,low
1,disease2,low,2,disease2,low,3,disease2,low
1,disease3,high,2,disease3,high,disease3,low
i.e. I want exactly 4 lines of output, each line is the result of joining every fourth line of the input with a comma.
shell text-processing command-line perl
I have a file (comma separated) on a Linux system with 3 columns. I want to start new column after every 4th row.
Input:
col1,col2,col3
1,disease1,high
1,disease2,low
1,disease3,high
col1,col2,col3
2,disease1,low
2,disease2,low
2,disease3,high
col1,col2,col3
3,disease1,low
3,disease2,low
3,disease3,low
Expected output:
col1,col2,col3,col1,col2,col3,col1,col2,col3
1,disease1,high,2,disease1,low,3,disease1,low
1,disease2,low,2,disease2,low,3,disease2,low
1,disease3,high,2,disease3,high,disease3,low
i.e. I want exactly 4 lines of output, each line is the result of joining every fourth line of the input with a comma.
shell text-processing command-line perl
shell text-processing command-line perl
edited Dec 31 '18 at 13:28
icarus
5,7411929
5,7411929
asked Dec 31 '18 at 6:08
LiNiLiNi
102
102
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
With awk
:
awk 'a[NR%4] = a[NR%4] (NR<=4 ? "" : ",") $0
ENDfor (i = 1; i <= 4; i++) print a[i%4]' < input.txt
add a comment |
Try paste
ing four lines into one, read
ing those into four variables, appending each to output lines:
paste -s -d" n" file |
while read A B C D
do L1="$L1$DL$A"
L2="$L2$DL$B"
L3="$L3$DL$C"
L4="$L4$DL$D"
DL=,
done
printf "%sn" "$L1" "$L2" "$L3" "$L4"
col1,col2,col3,col1,col2,col3,
1,disease1,high,2,disease1,low,
1,disease2,low,2,disease2,low,
1,disease3,high,2,disease3,high,
EDIT: or, a bit simpler, no paste
needed:
while read A && read B && read C && read D
do L1="$L1$DL$A"
L2="$L2$DL$B"
L3="$L3$DL$C"
L4="$L4$DL$D"
DL=,
done < file
printf "%sn" "$L1" "$L2" "$L3" "$L4"
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
);
);
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%2f491702%2fhow-to-start-a-new-column-after-every-nth-row%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
With awk
:
awk 'a[NR%4] = a[NR%4] (NR<=4 ? "" : ",") $0
ENDfor (i = 1; i <= 4; i++) print a[i%4]' < input.txt
add a comment |
With awk
:
awk 'a[NR%4] = a[NR%4] (NR<=4 ? "" : ",") $0
ENDfor (i = 1; i <= 4; i++) print a[i%4]' < input.txt
add a comment |
With awk
:
awk 'a[NR%4] = a[NR%4] (NR<=4 ? "" : ",") $0
ENDfor (i = 1; i <= 4; i++) print a[i%4]' < input.txt
With awk
:
awk 'a[NR%4] = a[NR%4] (NR<=4 ? "" : ",") $0
ENDfor (i = 1; i <= 4; i++) print a[i%4]' < input.txt
answered Dec 31 '18 at 11:30
Stéphane ChazelasStéphane Chazelas
301k55564916
301k55564916
add a comment |
add a comment |
Try paste
ing four lines into one, read
ing those into four variables, appending each to output lines:
paste -s -d" n" file |
while read A B C D
do L1="$L1$DL$A"
L2="$L2$DL$B"
L3="$L3$DL$C"
L4="$L4$DL$D"
DL=,
done
printf "%sn" "$L1" "$L2" "$L3" "$L4"
col1,col2,col3,col1,col2,col3,
1,disease1,high,2,disease1,low,
1,disease2,low,2,disease2,low,
1,disease3,high,2,disease3,high,
EDIT: or, a bit simpler, no paste
needed:
while read A && read B && read C && read D
do L1="$L1$DL$A"
L2="$L2$DL$B"
L3="$L3$DL$C"
L4="$L4$DL$D"
DL=,
done < file
printf "%sn" "$L1" "$L2" "$L3" "$L4"
add a comment |
Try paste
ing four lines into one, read
ing those into four variables, appending each to output lines:
paste -s -d" n" file |
while read A B C D
do L1="$L1$DL$A"
L2="$L2$DL$B"
L3="$L3$DL$C"
L4="$L4$DL$D"
DL=,
done
printf "%sn" "$L1" "$L2" "$L3" "$L4"
col1,col2,col3,col1,col2,col3,
1,disease1,high,2,disease1,low,
1,disease2,low,2,disease2,low,
1,disease3,high,2,disease3,high,
EDIT: or, a bit simpler, no paste
needed:
while read A && read B && read C && read D
do L1="$L1$DL$A"
L2="$L2$DL$B"
L3="$L3$DL$C"
L4="$L4$DL$D"
DL=,
done < file
printf "%sn" "$L1" "$L2" "$L3" "$L4"
add a comment |
Try paste
ing four lines into one, read
ing those into four variables, appending each to output lines:
paste -s -d" n" file |
while read A B C D
do L1="$L1$DL$A"
L2="$L2$DL$B"
L3="$L3$DL$C"
L4="$L4$DL$D"
DL=,
done
printf "%sn" "$L1" "$L2" "$L3" "$L4"
col1,col2,col3,col1,col2,col3,
1,disease1,high,2,disease1,low,
1,disease2,low,2,disease2,low,
1,disease3,high,2,disease3,high,
EDIT: or, a bit simpler, no paste
needed:
while read A && read B && read C && read D
do L1="$L1$DL$A"
L2="$L2$DL$B"
L3="$L3$DL$C"
L4="$L4$DL$D"
DL=,
done < file
printf "%sn" "$L1" "$L2" "$L3" "$L4"
Try paste
ing four lines into one, read
ing those into four variables, appending each to output lines:
paste -s -d" n" file |
while read A B C D
do L1="$L1$DL$A"
L2="$L2$DL$B"
L3="$L3$DL$C"
L4="$L4$DL$D"
DL=,
done
printf "%sn" "$L1" "$L2" "$L3" "$L4"
col1,col2,col3,col1,col2,col3,
1,disease1,high,2,disease1,low,
1,disease2,low,2,disease2,low,
1,disease3,high,2,disease3,high,
EDIT: or, a bit simpler, no paste
needed:
while read A && read B && read C && read D
do L1="$L1$DL$A"
L2="$L2$DL$B"
L3="$L3$DL$C"
L4="$L4$DL$D"
DL=,
done < file
printf "%sn" "$L1" "$L2" "$L3" "$L4"
edited Dec 31 '18 at 11:14
answered Dec 31 '18 at 11:08
RudiCRudiC
4,2191312
4,2191312
add a comment |
add a comment |
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%2f491702%2fhow-to-start-a-new-column-after-every-nth-row%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