awk数组结合+=统计题
awk增加统计列值
为增加列数或进行运行结果统计,使用符号 + =。增加的结果赋给符号左边变量值,增加
到变量的域在符号右边。例如将 $ 1加入变量total,表达式为toatl+=$1。列值增加很有用。许
多文件都要求统计总数,但输出其统计结果十分繁琐。在awk中这很简单,请看下面的例子。
将所有学生的‘目前级别分’加在一起,方法是tot+=$6,tot即为awk浏览的整个文件的
域6结果总和。所有记录读完后,在END部分加入一些提示信息及域 6总和。不必在awk中显
示说明打印所有记录,每一个操作匹配时,这是缺省动作。
如果文件很大,你只想打印结果部分而不是所有记录,在语句的外面加上圆括号()即
可。
[root@localhost.localdomain 三 6月 14 10:17:24 home]#cat grade.txt
M.Tansley 05/99 48311 Green 8 40 44
Lulu 06/99 48317 green 8 24 26
P.Bunny 02/99 48 Yellow 12 35 28
J.Troll 07/99 4842 Brown-3 12 26 26
L.Tansley 07/99 4712 Brown-2 12 30 28
awk '(tot+=$6);END{print "Club student total points : " tot}' grade.txt
[root@localhost.localdomain 三 6月 14 09:48:37 home]#awk '(tot+=$6);END{print "Club student total points : " tot}' grade.txt
M.Tansley 05/99 48311 Green 8 40 44
Lulu 06/99 48317 green 8 24 26
P.Bunny 02/99 48 Yellow 12 35 28
J.Troll 07/99 4842 Brown-3 12 26 26
L.Tansley 07/99 4712 Brown-2 12 30 28
Club student total points : 155
实例1:
统计某目录下文件大小
[root@localhost.localdomain 三 6月 14 10:12:50 src]#ls -l
drwxr-xr-x 15 root root 4096 6月 5 16:49 nagios-plugins-2.1.1
-rw-r--r-- 1 root root 2677352 6月 5 16:37 nagios-plugins-2.1.1.tar.gz
-rw-r--r-- 1 root root 405725 6月 5 16:37 nrpe-2.12.tar.gz
ls -l | awk '/^[^d]/ {print $9 "\t"$5} {tot+=$5} END{print "total KB:"tot}'
[root@localhost.localdomain 三 6月 14 10:12:50 src]#ls -l | awk '/^[^d]/ {print $9 "\t"$5} {tot+=$5} END{print "total KB:"tot}'
nagios-plugins-2.1.1.tar.gz 2677352
nrpe-2.12.tar.gz 405725
zabbix-release-3.2-1.el7.noarch.rpm 13392
total KB:3104661
实例2:
文件如下
61.144.83.198 594
61.144.83.198 576
61.144.83.198 573
219.137.178.228 570
219.137.178.228 565
61.144.83.198 553
61.144.83.198 550
61.144.83.198 549
每一行以空格为分隔符,第一列是ip,第二列为不定数值
需求,现在想要将相同ip后的不定数值相加统计出来
awk '{a[$1]+=$2}END{for(i in a)print i,a[i]}' file
思路:
将ip作为a[]数组的下标,将$2中的内容赋值给a[$1]即a[ip],得到数组a[ip]=value
执行语句a[ip]+=value,这样同样的a[ip]中的值就会与下一行的$2相加,然后得到新的值,继续执行
直到文件末尾执行完毕
END模块
用变量i读取数组的下标,再取出数值a[i]即value值
最终得到结果
思考:(有什么不同)
awk 'a[$1]+=$2;END{for(i in a)print i,a[i]}' file
但在END前需要添加;表示结束,不然会发生语法错误
这个也能得到结果,执行后发现还是一个基础的问题pattern跟action的问题
若没有{}则表示pattern,action则表示1,即省略,会print $0;
都是一些细节问题
awk数组结合+=统计题的更多相关文章
- 3.awk数组详解及企业实战案例
awk数组详解及企业实战案例 3.打印数组: [root@nfs-server test]# awk 'BEGIN{array[1]="zhurui";array[2]=" ...
- 【转】awk 数组用法【精华贴】
文本处理的工作中,awk的数组是必不可少的工具,在这里,同样以总结经验和教训的方式和大家分享下我的一些学习心得,如有错误的地方,请大家指正和补充. awk的数组,一种关联数组(Associative ...
- [ SHELL编程 ] 数组、关联数组和awk数组
本文主要对shell编程中常用的数组.关联数组和awk数组定义.操作以及注意事项做个总结,并提供具体案例. 数组 数组定义:一对圆括号表示数组,数组元素之间用空格符号分割. Array=(val1 v ...
- (转)awk数组详解及企业实战案例
awk数组详解及企业实战案例 原文:http://www.cnblogs.com/hackerer/p/5365967.html#_label03.打印数组:1. [root@nfs-server t ...
- awk数组详解、实战
1.其它编程语言数组的下标一般从0开始,awk中数组下标默认从1开始,也可以从0开始设置: awk 'BEGIN{huluwa[0]="大娃";huluwa[1]="二娃 ...
- awk数组学习2
以下数据取自redis数据库中client list的结果, id= addr= fd= name= age= idle= flags=N db= sub= psub= multi=- qbuf= q ...
- poj 3321:Apple Tree(树状数组,提高题)
Apple Tree Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 18623 Accepted: 5629 Descr ...
- hdu 1541/poj 2352:Stars(树状数组,经典题)
Stars Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- 【转】awk数组操作
转自:http://blog.csdn.net/wangran51/article/details/9168361 用awk进行文本处理,少不了就是它的数组处理.那么awk数组有那些特点,一般常见运算 ...
随机推荐
- 利用.Net自带的票据完成BaseController的未登陆自动跳转到登陆页功能
一:定义票据中要记录的字段类 /// <summary> /// 用户存在于浏览器端的身份票据(非持久) /// 非持久 FormsAuthenticationTicket 的isPers ...
- tomcat 日志切割 catalina.out
在实际生产环境中,tomcat的 catalina.out日志默认是不切割的,由于看起来很不方便,以及在备份等方面都比较麻烦.是时候切割该文件了. 环境说明 centos 7.3 tomcat 8.5 ...
- 模板层(template)
模板: 什么是模板? html+模板语法 模板语法: 1 变量:{{}} 深度查询: 通过句点符号 . 过滤器 filter {{var|filter_name}} 2 标签: {% tag %} f ...
- Eclipse中使用Maven新建 Servlet 2.5的 SpringMVC项目
1.前言: 最近在学习SpringMVC框架,由于使用Eclipse创建的webAPP项目默认使用的还是比较旧的servlet2.3,而且默认使用的还是JDK1.5,所以便有一次开始了我的配置之路 2 ...
- 浅谈Windows环境下DOS及MS-DOS以及常见一些命令的介绍
浅谈Windows环境下DOS及MS-DOS以及常见一些命令的介绍 前记 自己是搞编程的,首先我是一个菜鸟,接触计算机这么久了,感觉很多计算机方面的技术和知识朦朦胧胧.模模糊糊,貌似有些贻笑大方了:所 ...
- hbmy周赛1--E
E - Combination Lock Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I6 ...
- JS 监听浏览器各个标签间的切换
以前看到过一些网页,在标签切换到其它地址时,网页上的标题上会发生变化,一直不知道这个是怎么做的,最近查了一些资料才发现有一个 visibilitychange 事件就可以搞定,这里将介绍一下页面可见性 ...
- 支付宝当面付开发(java)
支付宝当面付开发(java) 业务流程: 接入准备: 直接下载demo: https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7 ...
- BLE空中升级 谈(二)
BLE 空中升级谈 -- CC2541 的产品开发中OAD注意事项(续) TI CC2541支持多个硬件,多个软件对它进行空中升级,可以有不同的组合,硬件有 编号 名称 Hex 用法 1 Cc2540 ...
- NYOJ 1248 海岛争霸(Dijkstra变形——最短路径最大权值)
题目链接: http://acm.nyist.net/JudgeOnline/problem.php?pid=1248 描述 神秘的海洋,惊险的探险之路,打捞海底宝藏,激烈的海战,海盗劫富等等.加勒比 ...