Shell:使用awk对列数据求和


原文:Shell:使用awk对列数据求和
博客:http://www.changmeng.top/


举例两个例子:

  1. 对某一列进行求和
  2. 对某一列相同字段进行求和

对某一列进行求和

测试数据

test01.txt里写入测试数据。

echo "10,20,30" >> test01.txt
echo "40,50,60" >> test01.txt
echo "70,80,90" >> test01.txt

在这里插入图片描述

代码

这个文件有三行,每行有三个字段,用逗号分隔。如果我们想要计算第三列的和,也就是30+60+90=180。我们可以使用以下awk命令:

awk -F',' '{sum+=$3} END {print sum}' test01.txt

• -F’,':指定逗号为字段分隔符。

• {sum+=$3}:对每一行,将第三个字段的值累加到变量sum中。

• END {print sum}:在处理完所有行后,打印变量sum的值。

在这里插入图片描述

拓展示例

如果我们想要计算其他列的和,或者使用其他分隔符,我们只需要修改相应的参数即可。例如,如果我们想要计算第二列的和,也就是20+50+80=150,我们可以使用以下命令:

awk -F',' ' {sum+=$2} END {print sum}' test01.txt

在这里插入图片描述

对某一列相同字段进行求和

测试数据

test02.txt里写入测试数据。

echo "apple,10
banana,20
orange,30
apple,15
banana,25
orange,35" > test02.txt

在这里插入图片描述

代码

这个文件有六行,每行有两个字段,用逗号分隔。我们想要计算第一列相同字段的第二列的和,也就是apple的10+15=25,banana的20+25=45,orange的30+35=65。我们可以使用以下awk命令:

awk -F',' '{sum[$1]+=$2} END {for (i in sum) print i, sum[i]}' test02.txt

• -F’,':指定逗号为字段分隔符。

• {sum[$1]+=$2}:对每一行,将第二个字段的值累加到以第一个字段为键的数组sum中。

• END {for (i in sum) print i, sum[i]}:在处理完所有行后,遍历数组sum,并打印每个键和对应的值。

在这里插入图片描述

拓展示例

如果我们想要计算其他列相同字段的和,或者使用其他分隔符,我们只需要修改相应的参数即可。例如,如果我们想要计算第二列相同字段的第一列的和,我们可以使用以下命令:

awk -F',' '{sum[$2]+=$1} END {for (i in sum) print i, sum[i]}' test03.txt

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值