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数组有那些特点,一般常见运算 ...
随机推荐
- dulicate symbol for architecture i386 或者其他什么CPU架构 比如i386
昨天群里有个哥们遇到和么一个问题 , 错误的大概意思呢,就是 重复定义了 一个名字. 解决办法,只能修改名字啊. 而且,错误信息 也很明确的 支出了 重复定义的类文件名字PassGuardViewC ...
- c#快速写本地日志
很多人的程序在本地运行是好的,但是发布在服务器上后就会有各种各样的问题,但是服务器上又不能直接调试,所以直接读写本地日志成为解决问题的关键,我这个方法,会在发布网站的根目录自动创建 log.txt,并 ...
- 【vue系列之三】从一个vue-pdf-shower,说说vue组件和npm包
前言 从去年年初开始,自己便下决心要写一个vue系列的博客,但时至今日,才写系列的第三篇博客,想来甚是惭愧. 但是慢归慢,每一篇都要保证质量,以及要写出自己的心路历程,防止自己工作中填的坑再让读者走一 ...
- C++雾中风景6:拷贝构造函数与赋值函数
在进行C++类编写的过程之中,通常会涉及到类的拷贝构造函数与类的赋值函数.初涉类编写的代码,对于两类函数的用法一直是挺让人困惑的内容.这篇文章我们会详细来梳理拷贝构造函数与赋值函数的区别. 1.调用了 ...
- 第一个程序python.py
print("hello word")print("hello hello")print("hello hello")print(" ...
- ABP Zero 导航菜单之角色权限
本文的项目是官网生成,项目名称为XX,WEB为MVC,以Users权限模块为例解说文章. 1.定义PermissionNames PermissionNames是一个静态类,它在/XX.Core/Au ...
- 关于python使用threadpool中的函数单个参数和多个参数用法举例
1.对单个元素的函数使用线程池: # encoding:utf-8 __author__='xijun.gong' import threadpool def func(name): print 'h ...
- Redux入门示例-TodoList
Tip 前端技术真是日新月异,搞完 React 不搭配个数据流都不好意思了.满怀期待的心去翻了翻 flux,简直被官方那意识流的文档折服了,真是又臭又长还是我智商问题?
- Codeforces Round #336 (Div. 2)-608A.水题 608B.前缀和
A题和B题... A. Saitama Destroys Hotel time limit per test 1 second memory limit per test 256 megabyte ...
- FtpUtil.java测试 (淘淘商城第三课文件上传)
首先在common-taotao中创建一个utils包,复制FtpUtil.java到其中.然后如下: @Test public void testFtpUtil() throws Exception ...