awk: add column name with filename in loop2019 Community Moderator Electionchange column with awk scriptingSeparating names separated by “| character” to individual pairsawk change one column with anotherawk Command Loopstat(FILENAME) in awkApplying a mathematical function to every line in a large fileUsing 'awk' to print a placeholder in several blocks of dataPrint column with AWKget average for all numbers with irregular columnsAWK doesn't add new column
GPLv2 - licensing for commercial use
Word for a person who has no opinion about whether god exists
htop displays identical program in multiple lines
Why don't MCU characters ever seem to have language issues?
Good for you! in Russian
Peter's Strange Word
How can I ensure my trip to the UK will not have to be cancelled because of Brexit?
How did the power source of Mar-Vell's aircraft end up with her?
Am I not good enough for you?
Meaning of ちはース
Set and print content of environment variable in cmd.exe subshell?
Word-Letter Ladder
Algorithm to convert a fixed-length string to the smallest possible collision-free representation?
They call me Inspector Morse
Is it necessary to separate DC power cables and data cables?
What are some noteworthy "mic-drop" moments in math?
Grey hair or white hair
Tricky AM-GM inequality
How to clip a background including nodes according to an arbitrary shape?
Why does Deadpool say "You're welcome, Canada," after shooting Ryan Reynolds in the end credits?
How do you like my writing?
Are there historical instances of the capital of a colonising country being temporarily or permanently shifted to one of its colonies?
Replacing Windows 7 security updates with anti-virus?
Why is this plane circling around the LKO airport every day?
awk: add column name with filename in loop
2019 Community Moderator Electionchange column with awk scriptingSeparating names separated by “| character” to individual pairsawk change one column with anotherawk Command Loopstat(FILENAME) in awkApplying a mathematical function to every line in a large fileUsing 'awk' to print a placeholder in several blocks of dataPrint column with AWKget average for all numbers with irregular columnsAWK doesn't add new column
I have a question to add a column title during a loop with awk:
I currently have this code, which calculates the mean of each line for each csv file :
for i in *.csv; do
awk -F"," 'NR==1 next
T=0
for(N=1; N<=NF; N++) T+=$N;
T/=NF
print T ' $i > Mean$i
done
So I get files MeanName1.csv, MeanName2.csv, ... containing:
2.5 3.5 ...
4.2 3.4
1.2 3.9
1.2 3.7
I would like to get a single file "Mean" containing:
Name1 Name2 ...
2.5 3.5
4.2 3.4
1.2 3.9
1.2 3.7
I failed to use print FILENAME in the loop.
Do you have any suggestions ?
Thank you
awk
New contributor
add a comment |
I have a question to add a column title during a loop with awk:
I currently have this code, which calculates the mean of each line for each csv file :
for i in *.csv; do
awk -F"," 'NR==1 next
T=0
for(N=1; N<=NF; N++) T+=$N;
T/=NF
print T ' $i > Mean$i
done
So I get files MeanName1.csv, MeanName2.csv, ... containing:
2.5 3.5 ...
4.2 3.4
1.2 3.9
1.2 3.7
I would like to get a single file "Mean" containing:
Name1 Name2 ...
2.5 3.5
4.2 3.4
1.2 3.9
1.2 3.7
I failed to use print FILENAME in the loop.
Do you have any suggestions ?
Thank you
awk
New contributor
The way you have written the data in the question makes it look like you have several columns of data in the same file. Can we assume that you only have a single column of data per file, as indicated by your actual code?
– Kusalananda
1 hour ago
Correct, I have only a single column of data in each Mean File.
– MLdish
1 hour ago
add a comment |
I have a question to add a column title during a loop with awk:
I currently have this code, which calculates the mean of each line for each csv file :
for i in *.csv; do
awk -F"," 'NR==1 next
T=0
for(N=1; N<=NF; N++) T+=$N;
T/=NF
print T ' $i > Mean$i
done
So I get files MeanName1.csv, MeanName2.csv, ... containing:
2.5 3.5 ...
4.2 3.4
1.2 3.9
1.2 3.7
I would like to get a single file "Mean" containing:
Name1 Name2 ...
2.5 3.5
4.2 3.4
1.2 3.9
1.2 3.7
I failed to use print FILENAME in the loop.
Do you have any suggestions ?
Thank you
awk
New contributor
I have a question to add a column title during a loop with awk:
I currently have this code, which calculates the mean of each line for each csv file :
for i in *.csv; do
awk -F"," 'NR==1 next
T=0
for(N=1; N<=NF; N++) T+=$N;
T/=NF
print T ' $i > Mean$i
done
So I get files MeanName1.csv, MeanName2.csv, ... containing:
2.5 3.5 ...
4.2 3.4
1.2 3.9
1.2 3.7
I would like to get a single file "Mean" containing:
Name1 Name2 ...
2.5 3.5
4.2 3.4
1.2 3.9
1.2 3.7
I failed to use print FILENAME in the loop.
Do you have any suggestions ?
Thank you
awk
awk
New contributor
New contributor
edited 2 hours ago
MLdish
New contributor
asked 2 hours ago
MLdishMLdish
84
84
New contributor
New contributor
The way you have written the data in the question makes it look like you have several columns of data in the same file. Can we assume that you only have a single column of data per file, as indicated by your actual code?
– Kusalananda
1 hour ago
Correct, I have only a single column of data in each Mean File.
– MLdish
1 hour ago
add a comment |
The way you have written the data in the question makes it look like you have several columns of data in the same file. Can we assume that you only have a single column of data per file, as indicated by your actual code?
– Kusalananda
1 hour ago
Correct, I have only a single column of data in each Mean File.
– MLdish
1 hour ago
The way you have written the data in the question makes it look like you have several columns of data in the same file. Can we assume that you only have a single column of data per file, as indicated by your actual code?
– Kusalananda
1 hour ago
The way you have written the data in the question makes it look like you have several columns of data in the same file. Can we assume that you only have a single column of data per file, as indicated by your actual code?
– Kusalananda
1 hour ago
Correct, I have only a single column of data in each Mean File.
– MLdish
1 hour ago
Correct, I have only a single column of data in each Mean File.
– MLdish
1 hour ago
add a comment |
1 Answer
1
active
oldest
votes
Joining the output files is easiest done with paste
, but I don't think it knows how to add the file names as headers. But we can do that manually to the intermediate output files within the loop, so:
for i in *.csv; do
out="Mean$i"
echo "$i%.csv" > "$out"
awk -F"," 'NR==1 next
T=0
for(N=1; N<=NF; N++) T+=$N;
T/=NF
print T ' $i >> "$out"
done
paste Mean*.csv > All.csv
$i%.csv
is just the value of $i
with the suffix .csv
removed, so for foo.csv
and bar.csv
, that gives an output like this:
bar foo
4.33333 2.5
3.8 3.5
I note you're also skipping the first line of each input line (NR==1 next
). If they contain useful headers, you could of course use those too by changing that to NR==1 print; next
and then removing the echo
I added above.
Exactly what I needed, thanks! (I don't need header of each *.csv files, so I keep echo)
– MLdish
1 hour ago
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
);
);
MLdish 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%2f505910%2fawk-add-column-name-with-filename-in-loop%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Joining the output files is easiest done with paste
, but I don't think it knows how to add the file names as headers. But we can do that manually to the intermediate output files within the loop, so:
for i in *.csv; do
out="Mean$i"
echo "$i%.csv" > "$out"
awk -F"," 'NR==1 next
T=0
for(N=1; N<=NF; N++) T+=$N;
T/=NF
print T ' $i >> "$out"
done
paste Mean*.csv > All.csv
$i%.csv
is just the value of $i
with the suffix .csv
removed, so for foo.csv
and bar.csv
, that gives an output like this:
bar foo
4.33333 2.5
3.8 3.5
I note you're also skipping the first line of each input line (NR==1 next
). If they contain useful headers, you could of course use those too by changing that to NR==1 print; next
and then removing the echo
I added above.
Exactly what I needed, thanks! (I don't need header of each *.csv files, so I keep echo)
– MLdish
1 hour ago
add a comment |
Joining the output files is easiest done with paste
, but I don't think it knows how to add the file names as headers. But we can do that manually to the intermediate output files within the loop, so:
for i in *.csv; do
out="Mean$i"
echo "$i%.csv" > "$out"
awk -F"," 'NR==1 next
T=0
for(N=1; N<=NF; N++) T+=$N;
T/=NF
print T ' $i >> "$out"
done
paste Mean*.csv > All.csv
$i%.csv
is just the value of $i
with the suffix .csv
removed, so for foo.csv
and bar.csv
, that gives an output like this:
bar foo
4.33333 2.5
3.8 3.5
I note you're also skipping the first line of each input line (NR==1 next
). If they contain useful headers, you could of course use those too by changing that to NR==1 print; next
and then removing the echo
I added above.
Exactly what I needed, thanks! (I don't need header of each *.csv files, so I keep echo)
– MLdish
1 hour ago
add a comment |
Joining the output files is easiest done with paste
, but I don't think it knows how to add the file names as headers. But we can do that manually to the intermediate output files within the loop, so:
for i in *.csv; do
out="Mean$i"
echo "$i%.csv" > "$out"
awk -F"," 'NR==1 next
T=0
for(N=1; N<=NF; N++) T+=$N;
T/=NF
print T ' $i >> "$out"
done
paste Mean*.csv > All.csv
$i%.csv
is just the value of $i
with the suffix .csv
removed, so for foo.csv
and bar.csv
, that gives an output like this:
bar foo
4.33333 2.5
3.8 3.5
I note you're also skipping the first line of each input line (NR==1 next
). If they contain useful headers, you could of course use those too by changing that to NR==1 print; next
and then removing the echo
I added above.
Joining the output files is easiest done with paste
, but I don't think it knows how to add the file names as headers. But we can do that manually to the intermediate output files within the loop, so:
for i in *.csv; do
out="Mean$i"
echo "$i%.csv" > "$out"
awk -F"," 'NR==1 next
T=0
for(N=1; N<=NF; N++) T+=$N;
T/=NF
print T ' $i >> "$out"
done
paste Mean*.csv > All.csv
$i%.csv
is just the value of $i
with the suffix .csv
removed, so for foo.csv
and bar.csv
, that gives an output like this:
bar foo
4.33333 2.5
3.8 3.5
I note you're also skipping the first line of each input line (NR==1 next
). If they contain useful headers, you could of course use those too by changing that to NR==1 print; next
and then removing the echo
I added above.
edited 1 hour ago
answered 1 hour ago
ilkkachuilkkachu
61k1098174
61k1098174
Exactly what I needed, thanks! (I don't need header of each *.csv files, so I keep echo)
– MLdish
1 hour ago
add a comment |
Exactly what I needed, thanks! (I don't need header of each *.csv files, so I keep echo)
– MLdish
1 hour ago
Exactly what I needed, thanks! (I don't need header of each *.csv files, so I keep echo)
– MLdish
1 hour ago
Exactly what I needed, thanks! (I don't need header of each *.csv files, so I keep echo)
– MLdish
1 hour ago
add a comment |
MLdish is a new contributor. Be nice, and check out our Code of Conduct.
MLdish is a new contributor. Be nice, and check out our Code of Conduct.
MLdish is a new contributor. Be nice, and check out our Code of Conduct.
MLdish 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%2f505910%2fawk-add-column-name-with-filename-in-loop%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
-awk
The way you have written the data in the question makes it look like you have several columns of data in the same file. Can we assume that you only have a single column of data per file, as indicated by your actual code?
– Kusalananda
1 hour ago
Correct, I have only a single column of data in each Mean File.
– MLdish
1 hour ago