awk的求和计算使用;awk多个分隔符如何使用?
1、对于下图,如何使用awk求所有各列的和

和:175 16 78 19
方法:awk '{for(n=1;n<=NF;n++)t[n]+=$n}END{for(n=1;n<=NF;n++)printf t[n]" ";print"\n"}'
2、求某一列的和:
[linux@test /tmp]$ awk '{sum += $1};END {print sum}' test
3、求某一列满足某些条件的和:
[linux@test /tmp]$ awk '/aaa/ {sum += $2};END {print sum}' test
举例:对于
11 1 32 3
12 2 33 4
43 3 2 1
12 2 2 2
43 3 3 3
54 5 6 6
使用 awk '/12/ {sum += $2};END {print sum}' 结果为4。含义----求满足每行里有字符12的所有第二列的和
4、比较完整的一个例子:
awk -F ',' 'BEGIN{sum=0 ;count=0}{if ($(NF-11) == 2 && $NF == 0 && $3 == "1.6.1_1_1") {sum +=$5; count++;} } END {print "sum="sum" count="count " avg="sum/count}'
说明:
BEGIN{sum=0 ;count=0} 初始化计数器;
END {print "sum="sum" count="count " avg="sum/count} 打印汇总,计数器和均值;
if ($(NF-11) == 2 && $NF == 0 && $3 == "1.6.1_1_1") {sum +=$5; count++;} 判断倒数第11个字段,判断倒数第一个字段,判断第三个字段(字符串) 第五个字段汇总累加,计数器累加
$NF 可用来表示一个记录的最后一个栏位
NF表示当前行的字段数,$0表示当前行
关于多个分割符号:
1、awk -F ',' 表示使用逗号多分隔符
2、awk -F 'AB' 表示使用符号AB做分隔符 echo ABCDABDDCADAFB | awk -F 'AB' '{for(i=1;i<=NF;i++)printf $i" "}'输出 CD DDCADAFB
3、awk -F '[AB]' 表示使用A或者B做分隔符,就是遇到字符A或者B都分割 echo ABCDABDDCADAFB | awk -F '[AB]' '{for(i=1;i<=NF;i++)printf $i" "}' 输出 CD DDC D F
4、awk -F '[\\|]' 表示使用符号‘|’做分隔符,这里有两层转义,先转义\,然后转义|。
5、echo "ABC|DAB|DD CA DAFB" | awk -F '[ \\|]' '{for(i=1;i<=NF;i++)printf $i" "}' 输出 ABC DAB DD CA DAFB
6、print打印会换行,printf打印不换行
参考:
数学计算:
1、http://bbs.chinaunix.net/thread-3558406-1-1.html
2、https://www.chedong.com/blog/archives/000682.html
3、https://blog.csdn.net/bright_mac/article/details/3419419
4、https://www.ibm.com/developerworks/cn/linux/l-cn-awkinwork/index.html
分隔符:
1、http://blog.51cto.com/jschu/1770467
2、http://www.cnblogs.com/aquastar/archive/2012/10/07/2776208.html
awk的求和计算使用;awk多个分隔符如何使用?的更多相关文章
- awk 分组求和
awk 分组求和 分组求和 awk '{s[substr($2,1,6)] += $1} END{for(i in s) {print i, s[i]/(1024*1024*1024)} }' fil ...
- Shell基础(六):使用awk提取文本、awk处理条件、awk综合脚本应用、awk流程控制、awk扩展应用
一.使用awk提取文本 目标: 本案例要求使用awk工具完成下列过滤任务: 1> 练习awk工具的基本用法 2> 提取本机的IP地址.根分区使用率 3> 格式化输出/et ...
- awk程序设计语言之-awk基础
awk程序设计语言之-awk基础 http://man.linuxde.net/ 常用工具命令之awk命令 awk是一种编程语言,用于在Linux/Unix下对文本和数据处理.数据可以来自标准输入(s ...
- awk分割列-【AWK学习之旅】
---===AWK学习之旅===--- awk 内置分割函数:split,将列按照指定分割符,分割成数组 用法:split(str1,array,"分隔符") 文件内容: [roo ...
- 精通awk系列(7):awk读取行的细节
回到: Linux系列文章 Shell系列文章 Awk系列文章 详细分析awk如何读取文件 awk读取输入文件时,每次读取一条记录(record)(默认情况下按行读取,所以此时记录就是行).每读取一条 ...
- awk系列:在awk中如何使用流程控制语句
导读 当你回顾所有到目前为止我们已经覆盖的 awk 实例,从 awk 系列的开始,你会注意到各种实例的所有指令是顺序执行的,即一个接一个地执行.但在某些情况下,我们可能希望基于一些条件进行文本过滤操作 ...
- 简明awk教程(Simple awk tutorial)
整理翻译.原文地址:http://www.hcs.harvard.edu/~dholland/computers/awk.html 简明awk教程 为什么选awk? awk小巧.快速.简单.awk语言 ...
- 精通awk系列(12):awk getline用法详解
回到: Linux系列文章 Shell系列文章 Awk系列文章 getline用法详解 除了可以从标准输入或非选项型参数所指定的文件中读取数据,还可以使用getline从其它各种渠道获取需要处理的数据 ...
- 精通awk系列(6):awk命令结构和awk语法结构
回到: Linux系列文章 Shell系列文章 Awk系列文章 awk命令行结构和语法结构 awk命令行结构 awk [ -- ] program-text file ... (1) awk -f p ...
随机推荐
- [转载]关于typedef的用法总结
不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中.typedef与#define有些相似,但更多 的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一 ...
- 让 PHP COOKIE 立即生效(不用刷新就可以使用)
<?php function set_my_cookie($, $path = '', $domain = '') { $_COOKIE[$var] = $value; setcookie($v ...
- Welcome-to-Swift-11方法(Methods)
方法是由特定类型关联起来的函数.类.结构体和枚举都能定义成实例方法.它封装了特定的任务和给定类型的实例的功能函数.类,结构体和方法也能定义类型方法,它只与类型的本身由关联.类型方法和Objective ...
- 【Luogu】P3787冰精冻西瓜(线段树)
题目链接 我脑子怕不是有坑qwqqq 用前缀和思想,dis[i]表示i离根的距离,那么修改操作其实是对x的子树区间加y/dis[x],查询的时候*dis[to]即可. 对付/0错的思路是建森林,然而这 ...
- java面试题之BeanFactory和FactoryBean的区别
BeanFactory是个Factory,也就是IOC容器或对象工厂:FactoryBean是个Bean.在Spring中,所有的Bean都是由BeanFactory(也就是IOC容器)来进行管理的. ...
- eclipse testng插件安装
1.安装Testng 在Eclipse中,点击Help→Install new software→点击Add,在location中输入http://beust.com/eclipse ,选择TestN ...
- linux tomcat安装(二)
安装步骤: 1.下载 Tomcat 下载 apache-tomcat-7.0.69.tar.gz(官方网址:http://tomcat.apache.org/) 2.解压 Tomcat 解压 apac ...
- 事务的传播行为和隔离级别[transaction behavior and isolated level]
Spring中事务的定义:一.Propagation : key属性确定代理应该给哪个方法增加事务行为.这样的属性最重要的部份是传播行为.有以下选项可供使用: PROPAGATION_REQUIRED ...
- C#:判断当前线程所处状态&委托
1.线程状态ThreadState 在C#中,线程对象Thread使用ThreadState属性指示线程状态,它是带Flags特性的枚举类型对象. ThreadState 为线程定义了一组所有可能的执 ...
- 头条PC端的鼠标经过图片放大效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...