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实现第一列相乘,第二列求和,并相加 - 米扑博客...相关推荐

  1. linux cp 排除文件,cp、tar命令排除文件和子目录 - 米扑博客

    测试树形目录 $ cd mimvp-blog/ $ tree . |____111.txt |____222.txt |____333.txt |____folder01 | |____111.txt ...

  2. linux去除内容重复行,Linux删除文本中的重复行 - 米扑博客

    在进行文本处理的时候,我们经常遇到要删除重复行的情况.那怎么解决呢? 下面就是三种常见方法? 第一,用sort+uniq,注意,单纯uniq是不行的,uniq对于重复行不上下连续时不起作用 因此,先对 ...

  3. linux 指令效率,Linux15个命令,大幅提高工作效率 - 米扑博客

    Linux 15个命令神器 ag.tig.mycli.jq.shellcheck.fzf.fpp.htop.glances.axel.sz/rz.cloc.tmux.script/scriptrepl ...

  4. 十大实用linux脚本,5个超实用的Shell脚本 - 米扑博客

    分享5个shell脚本实例,大家可以借鉴下里面的思路,看下有没另外一种实现方式. 1.定时清空文件内容,定时记录文件大小 #!/bin/bash ########################### ...

  5. linux降低磁盘的读,Linux磁盘I/O优化:vm.dirty_ratio - 米扑博客

    Linux 文件缓存是一项重要的性能改进,在大多数情况下,读缓存在绝大多数情况下是有益无害的(程序可以直接从RAM中读取数据).写缓存比较复杂,Linux内核将磁盘写入缓存,过段时间再异步将它们刷新到 ...

  6. linux快速切换目录命令,Linux在命令行快速切换目录 - 米扑博客

    今天在微博上看到一个用命令行快速切换目录的文章,比之前自己的解决方案好了非常多,必须记录下来分享下. 每天在命令行下,一大部分的工作都是一遍又一遍的输入 cd ~/some/very/deep/oft ...

  7. linux var log目录作用,Linux系统/var/log/journal/垃圾日志清理 - 米扑博客

    CentOS系统中有两个日志服务,分别是传统的 rsyslog 和 systemd-journal # ls -l /etc/logrotate.d/ -rw-r--r-- 1 root root 9 ...

  8. php 全局变量 $global 跨文件,PHPGlobal全局变量 - 米扑博客

    Global是php中一个比较特殊的命令,大家直接叫他超级全局变量. 很不习惯PHP中的变量作用域,PHP中函数变量和全局是完全隔绝的,也就是无法相互访问. PHP Global变量在实际应用中,会发 ...

  9. svn服务器设置忽略文件夹,SVNignore忽略文件及目录 - 米扑博客

    SVN 忽略文件夹 1.若创建了一个文件夹,并且把它加入版本控制,但忽略文件夹中的所有文件的内容 $ svn mkdir cache $ svn propset svn:ignore '*' cach ...

最新文章

  1. 全球及中国4-氨基-3-硝基苯酚行业前景趋势与投资规模格局报告2022版
  2. 如何使用SAP Cloud for Customer里的ABSL代码调用Web service
  3. C++primer 第 4 章 表达式 4.1基础 4 . 2 算术运算符 4 .3 逻辑和关系运算符 4 . 4 赋值运算符 4 .5 递增和递减运算符 4.6成员访问运算符
  4. 计算机的应用可以分为几类,计算机分为哪几类专业
  5. java使用Post方式发送https请求的方法,直接可以用
  6. 《21天学通Java(第6版)》—— 1.7 问与答
  7. 评委对计算机知识竞赛的提问,评委评分知识竞赛答题软件
  8. 微信小程序UI设计(二)之view组件
  9. 非常规的DeepFaceLab(DeepFake)小花招和注意事项
  10. Young不等式的一个新证明
  11. 算法-动态规划-打家劫舍
  12. 4.人工智能时代下的大数据
  13. Affine-Transformation Parameters Regression for Face Alignment
  14. mysql生成序列_mysql 自动生成编号函数
  15. Fuzzing及Sulley简介
  16. LabVIEW MasterFramework 源码下载入口
  17. Infinite-former:无限记忆变换器
  18. 湖南成人高考医学专业可以跨专业报考吗
  19. 初学Python出现EnvironmentLocationNotFound: Not a conda environment: /anaconda3/envs/anaconda3
  20. FIO测试硬盘IOPS

热门文章

  1. 记一次.net mvc中 RouteAttribute 不起作用
  2. Android Theme主题
  3. C#:将图片文件上传到数据库两种方法。
  4. PHP error_reporting() 错误控制函数功能详解
  5. Linux查看磁盘块大小
  6. 《软件需求最佳实践》——阅读笔记一
  7. 第十二章——SQLServer统计信息(3)——发现过期统计信息并处理
  8. SpringMVC学习总结(三)——Controller接口详解(1)
  9. linux单机配置DG过程记录
  10. (一) 开天辟地入门篇(mvc)