awk之行与列的count & sum命令总汇

18 篇文章 0 订阅
10 篇文章 0 订阅

文本:

10 11 12 13 14
15
16 17 18 19
20 21
22 23 24 25

1) 每行字段数

awk '{print NF}' file

2) 最大字段数

awk '{max=max<NF?NF:max}END{print max}' file

3) 总共字段个数

awk '{x+=NF}END{print x}' file

4) 所有字段的总和

awk '{for(i=1;i<=NF;i++)x+=$i}END{print x}' file

5) 各行的总和

awk '{x=0;for(i=1;i<=NF;i++){x+=$i};print x}' file

6) 各列的总和

awk '{for(i=1;i<=NF;i++){a[i]+=$i}}END{l=asorti(a,b);for(j=1;j<=l;j++){printf ("%d ",a[b[j]])}printf "\n"}' file

awk '{for(i=1;i<=NF;i++){a[i]+=$i};l=l<NF?NF:l}END{for(j=1;j<=l;j++) printf a[j]" ";printf "\n"}' file

awk '{for(i=1;i<=NF;i++)a[i]+=$i}END{l=length(a);for(j=1;j<=l;j++) printf a[j]" ";printf "\n"}' file

7) 行列交换

awk '{for(i=1;i<=NF;i++)a[NR,i]=$i;max=max<NF?NF:max}END{for(i=1;i<=max;i++){for(j=1;j<=NR;j++){if(length(a[j,i]))printf a[j,i]" "};printf "\n"}}' file

也可以空格补齐

awk '{for(i=1;i<=NF;i++)a[NR,i]=$i;x=x<NF?NF:x}END{for(i=1;i<=x;i++){for(j=1;j<=NR;j++){printf length(a[j,i])?a[j,i]" ":" "};printf "\n"}}' file

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值