概述
AWK 取了三位创始人 Alfred Aho,Peter Weinberger, Brian Kernighan 的Family Name的首字符,学习AWK有一本相当经典的书《The AWK Programming Language》
我在这里的教程并不想面面俱到,本文和我之前的Go语言简介一样,全是示例,基本无废话。
现在想用awk实现第一列相乘,第二列求和,并相加
例如:
$ cat test_num.txt
1 10
2 20
3 30
4 40
5 50
说明:
1)第一列相乘,即 1 * 2 * 3 * 4 * 5 = 120
2)第二列相加,即 10 + 20 + 30 + 40 + 50 = 150
3)并相加,即 120 + 150 = 270
解题思路:
先对第一列求乘积,再对第二列求和,最后乘积与求和相加
解法1:使用 awk 运算
cat test_num.txt | awk 'BEGIN{multi=1;sum=0;}{multi*=$1;sum+=$2}END {print multi " + " sum " = " multi+sum}'
$ cat test_num.txt | awk 'BEGIN{multi=1;sum=0;}{multi*=$1;sum+=$2}END {print multi " + " sum " = " multi+sum}'
120 + 150 = 270
解法2:使用 shell while 循环
vim cal_multi_sum.sh
$ cat cal_multi_sum.sh
#!/bin/bash
# yanggang 2021.02.20
multi=1
sum=0
while read line
do
col1=`echo $line | cut -d ' ' -f 1`
col2=`echo $line | cut -d ' ' -f 2`
multi=`expr ${multi} * ${col1}`
sum=`expr ${sum} + ${col2}`
echo "${col1} ${col2} ${multi} ${sum}"
done < test_num.txt
result=`expr ${multi} + ${sum}`
echo "${multi} + ${sum} = ${result}"
运行结果:
$ sh cal_multi_sum.sh
1 10 1 10
2 20 2 30
3 30 6 60
4 40 24 100
5 50 120 150
120 + 150 = 270
参考推荐:
最后
以上就是开放芒果为你收集整理的linux将文件的第二列求和,awk实现第一列相乘,第二列求和,并相加 - 米扑博客...的全部内容,希望文章能够帮你解决linux将文件的第二列求和,awk实现第一列相乘,第二列求和,并相加 - 米扑博客...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复