第三列相同时,第四列累加
1 | awk 'BEGIN{FS=OFS="\t"} \ |
awk中的数组由一对字符串组成,第一个字符串是‘index’
,第二个是index所对应的value
,a[$3]+=$4
中的index来自第三列,value是第四列相应值的累加。
用asorti在awk中排序1
2
3
4awk 'BEGIN{FS=OFS="\t"} \
NR>1 \
{a[$3]+=$4} \
END {n=asorti(a,b);for (i=1;i<=n;i++) {print b[i],a[b[i]]}}' text.txt
依据第三列和第二列,第四列累加
1 | awk 'BEGIN{FS=OFS="\t"} \ |
第三列相同时,第四列的最大值
1 | awk -F, '{if (a[$1] < $2)a[$1]=$2;}END{for(i in a){print i,a[i];}}' OFS=, file.txt |
第三列相同值计数
1 | awk -F, '{a[$1]++;}END{for (i in a)print i, a[i];}' file.txt |
第三列相同时,仅输出第四列第一个值
1 | awk -F, '!a[$1]++' file.txt |
第三列相同时,第四列的所有值并未一行
1 | awk -F, '{if(a[$1])a[$1]=a[$1]":"$2; else a[$1]=$2;}END{for (i in a)print i, a[i];}' OFS=, file.txt |
参考资料
A Pivot Table In AWK
awk - 10 examples to group data in a CSV or text file