AWK累加问题
举个例子,比如下面这个test文件,我想把第二列每3行累加一次:
# cat test
a1
b2
c3
d4
e5
f6
那我写成这样是可以实现的,每3行累加,输出结果:
# awk '{sum+=$2;if(NR%3==0){print $1,sum;sum=0}}' test
c 6
f 15
但是如果文件行数不是3的倍数改怎么办?
# cat test
a1
b2
c3
d4
e5
f6
g7
h8
比如上面这个8行的文件我想输出成以下这样,最后多余行直接累加并输出:
c 6
f 15
g 15
你想最后一行輸出是 g 15,還是 h 15
$ awk '{sum+=$2;if(NR%3==0){print $1,sum;sum=0}} END{print $1,sum}' test
c 6
f 15
h 15
$ awk '{sum+=$2; c=$1; if(NR%3==0){print $1,sum;sum=0;c=$1}} END{print c,sum}' test
c 6
f 15
g 15
h 15,多谢了 awk '{b+=$2}NR%3==0{print $1,b;b=0}END{if(NR%3!=0)print $1,b}' 本帖最后由 a5love3n 于 2021-09-24 16:16 编辑
awk '{sum=$2;for(i=0;i<2;i++){if((getline)>0){sum+=$2}}{print $1" "sum}}' test
页:
[1]