我是靠谱客的博主 开放芒果,最近开发中收集的这篇文章主要介绍linux将文件的第二列求和,awk实现第一列相乘,第二列求和,并相加 - 米扑博客...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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实现第一列相乘,第二列求和,并相加 - 米扑博客...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部