文本:
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]" ":"