1.将某一列的数值想加

利用awk命令 awk '{print $n}' | awk '{sum+=$1}END{print sum}'

awk '{print $1}' | awk '{sum+=$1}END{print sum}'

例:

2.将行的数值想加

awk '{sum=0;for (i=1;i<4;i++){sum+=$i}print sum}'   (i 小于 列+1数)

awk '{sum=0;for (i=1;i<4;i++){sum+=$i}print sum}'

3.统计第n列所有的值及数量(去掉每列的重复值,并输出对应数量)

   命令:awk '{a[$n]++}END{for (i in a)print i,a[i]}'

awk '{a[$1]++}END{for (i in a)print i,a[i]}'
[root@localhost ~]# cat number.sh 
1 2 3 4 5 6
1 2 4 6 8 7
2 4 5 7 9 8
11 5 3 8 5 6
[root@localhost ~]# cat number.sh |awk '{a[$1]++}END{for (i in a)print i,a[i]}'
11 1
1 2
2 1
[root@localhost ~]# cat number.sh |awk '{a[$5]++}END{for (i in a)print i,a[i]}'
5 2
8 1
9 1

3.2.统计第n列所有的值,去掉重复值(去掉每列的重复值)

    命令:awk '{if(!a[$n]++) print $n}'

awk '{if(!a[$1]++) print $1}'
[root@localhost ~]# cat number.sh |awk '{if(!a[$1]++) print $1}'
1
2
11
[root@localhost ~]# cat number.sh |awk '{if(!a[$5]++) print $5}'
5
8
9

3.3 按照第n列的值去除重复项,并输出第一次出现的所在行

命令:

awk '{if(!($n in a)){a[$n];print}}'
[root@localhost ~]# cat number.sh |awk '{if(!($1 in a)){a[$1];print}}'
1 2 3 4 5 6
2 4 5 7 9 8
11 5 3 8 5 6
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# cat number.sh |awk '{if(!($5 in a)){a[$5];print}}'
1 2 3 4 5 6
1 2 4 6 8 7
2 4 5 7 9 8

5.去掉重复行

命令:awk '{if(!(a[$0]++)){a[$0];print}}'

awk '{if(!(a[$0]++)){a[$0];print}}'
[root@localhost ~]# cat number.sh 
1 2 3 4 5 6
1 2 3 4 5 6
1 2 4 6 8 7
2 4 5 7 9 8
11 5 3 8 5 6
1 2 3 4 5 6
[root@localhost ~]# cat number.sh |uniq
1 2 3 4 5 6
1 2 4 6 8 7
2 4 5 7 9 8
11 5 3 8 5 6
1 2 3 4 5 6
# uniq 命令只能去除相邻的重复行
[root@localhost ~]# cat number.sh |awk '{if(!(a[$0]++)){a[$0];print}}'
1 2 3 4 5 6
1 2 4 6 8 7
2 4 5 7 9 8
11 5 3 8 5 6

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐