行求和
实例文件sum.txt中的数据如下:
空格分割
1 2 3 4 5 6 7 8 9 10
然后我们需要计算这一行数据
cat sum.txt | awk '{ for(i=1;i<=NF;i++) sum+=$i; print sum}'
拓展:
sum.txt内如下
小明今天去超市买了很多东西,有苹果、橘子、可乐、西瓜 苹果、橘子、可乐、西瓜价格分别为: 10, 8, 3, 12 请问小明今天花了多少钱?
那么,这个数据是很规律的我们就很好计算了,首先获取到价格的行数,然后分割再求和就可以了
代码:
cat sum.txt | sed -n '2p' | awk -F ":" '{print $2}' | awk -F "," '{ for(i=1;i<=NF;i++) sum+=$i; print sum}'
这样就可以获取到总额等于33了
第二行输出那个可以使用grep代替sed
其他就不一一举例了
列求和
这个的话对数据要求也要有点要求,格式也必须差不多,要能够分割出来,这举例做简单的吧,麻烦的需要先数据清洗。
1 2 3 4 5 6 7 8 9 10
这样的话就可以直接计算了
awk '{sum+=$1}END{print sum}' sum.txt
如果是复杂一点,同样是数据清洗过后直接计算,
小明今天去超市买了很多东西,有苹果、橘子、可乐、西瓜 苹果:10 橘子:8 可乐:3 西瓜:12 请问小明今天花了多少钱?
直接上代码:
sed -n '2,5p' sum.txt | awk -F ":" '{sum+=$2}END{print sum}'
嗯,记录一下