[英]Extract columns from multiple text files with bash or awk or sed?
[英]AWK (or something else) Average of multiple columns from multiple files
我希望能對awk腳本有幫助,也可以做任何工作。
因此,我有多個文件(行和列的數量相同),我想對所有文件中的每一列(第一列除外)的每個數字取平均值。 我不知道一個文件中有多少列(盡管如果需要,我可能可以得到數字)。
文件名1
1 1 2 3 4
2 3 4 5 6
3 2 3 5 6
文件名.2
1 3 4 6 6
2 5 6 7 8
3 4 5 7 8
輸出
1 2 3 5 5
2 4 5 6 7
3 3 4 6 7
我在這里的某個地方找到了它,它可以對單個列進行處理(據我所知)
awk '{a[FNR]+=$2;b[FNR]++;}END{for(i=1;i<=FNR;i++)print i,a[i]/b[i];}' fort.*
那么唯一的嗎? 更改將用所有列上的循環替換+ = $ 2嗎? 有沒有一種方法可以不知道確切的列數?
謝謝。
$ cat tst.awk
{
key[FNR] = $1
for (colNr=2; colNr<=NF; colNr++) {
sum[FNR,colNr] += $colNr
}
}
END {
for (rowNr=1; rowNr<=FNR; rowNr++) {
printf "%s%s", key[rowNr], OFS
for (colNr=2; colNr<=NF; colNr++) {
printf "%s%s", int(sum[rowNr,colNr]/ARGIND+0.5), (colNr<NF ? OFS : ORS)
}
}
}
$ awk -f tst.awk file1 file2
1 2 3 5 5
2 4 5 6 7
3 3 4 6 7
上面的代碼將GNU awk用於ARGIND,而其他awks只是在開始添加一行FNR==1{ARGIND++}
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.