awk命令:将某一列、行的数值相加。去除列中重复值,重复行

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

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用`awk`命令的 `$NF` 变量来获取命令输出内容的最后一列,其中`NF`表示字段数量, `$NF` 表示最后一个字段。 假设你要获取`ps`命令的输出中最后一列,你可以使用以下命令: ``` ps | awk '{print $NF}' ``` 在这个命令中,`ps` 命令的输出通过管道传递给 `awk` 命令,然后 `awk` 命令打印每的最后一个字段。 如果你要获取一个文件中每的最后一个字段,你可以使用类似的命令: ``` awk '{print $NF}' filename ``` 在这个命令中,`awk` 命令会打开 `filename` 文件,并打印每的最后一个字段。 ### 回答2: 在awk指令中,可以使用通用字段分隔符(FS)来读取输入文本的每一,并使用$符号引用每个字段。要获取命令输出内容中的最后一列,可以使用$NF关键字来引用最后一个字段。 可以通过以下命令来获取命令输出内容的最后一列: ```shell 命令输出 | awk '{print $NF}' ``` 其中,“命令输出”是你要获取最后一列命令命令。也可以将命令输出重定向到输入文件中,然后使用awk命令来处理文件内容。 例如,要获取ls命令的输出内容中的最后一列文件名,可以使用以下命令: ```shell ls | awk '{print $NF}' ``` 这将打印出当前目录下每个文件的文件名。假设当前目录只有一个文件“file.txt”,则命令的输出将是“file.txt”。 注意,以上命令中的字段分隔符默认是空格。如果需要使用其他分隔符,可以使用-F选项来指定。例如,如果文件中的字段是以逗号分隔的,可以使用以下命令: ```shell 命令输出 | awk -F ',' '{print $NF}' ``` 这将打印出以逗号分隔的每的最后一个字段。 ### 回答3: AWK是一种功能强大的文本处理工具,可以轻松处理文本文件和命令输出。要从命令输出内容中获取最后一列,可以使用AWK的字段分隔和打印功能。 AWK默认以空格作为字段分隔符,因此可以使用$NF变量来表示最后一个字段。$NF代表当前的最后一个字段,无论此包含多少个字段。 下面是使用AWK指令获取命令输出内容中最后一列的基本语法: ``` command | awk '{print $NF}' ``` 其中,command是生成命令输出的实际命令。该命令的输出作为管道输入传递给AWK指令。`{print $NF}`用于告诉AWK指令打印每一的最后一个字段。 例如,如果我们有一个命令输出内容如下: ``` Name Age Gender John 25 Male Lucy 28 Female ``` 运以下命令: ``` echo -e "Name Age Gender\nJohn 25 Male\nLucy 28 Female" | awk '{print $NF}' ``` 将输出: ``` Gender Male Female ``` 这样就可以获取到命令输出内容中的最后一列了。 需要注意的是,这个方法仅适用于命令输出内容之间以空格分隔字段的情况。如果字段分隔符是其他字符,可以使用AWK的-F选项指定不同的字段分隔符。 希望以上解答对您有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值