首页 » SEO优化 » phparray各项相加技巧_详解AWK 数组|若何将相同ip后的不天命值相加统计出来

phparray各项相加技巧_详解AWK 数组|若何将相同ip后的不天命值相加统计出来

访客 2024-11-04 0

扫一扫用手机浏览

文章目录 [+]

AWK关联数 组也不须要提前声明其大小,由于它在运行时可以自动的增大或减小。

数组利用的语法格式:

array_name[index]=valuearray_name:数组的名称index:数组索引value:数组中元素所授予的值创建数组

接下来看一下如何创建数组以及如何访问数组元素:

phparray各项相加技巧_详解AWK 数组|若何将相同ip后的不天命值相加统计出来

$ awk 'BEGIN {sites[\"大众runoob\"大众]=\"大众www.runoob.com\"大众;sites[\公众google\"大众]=\"大众www.google.com\"大众print sites[\"大众runoob\公众] \"大众\n\"大众 sites[\"大众google\"大众]}'

实行以上命令,输出结果为:

phparray各项相加技巧_详解AWK 数组|若何将相同ip后的不天命值相加统计出来
(图片来自网络侵删)

www.runoob.comwww.google.com

在上面的例子中,定义了一个站点(sites)数组,该数组的索引为网站英文简称,值为网站访问地址。
可以利用如下格式访问数组元素:

array_name[index] 删除数组元素

我们可以利用 delete 语句来删除数组元素,语法格式如下:

delete array_name[index

下面的例子中,数组中的 google 元素被删除(删除命令没有输出):

$ awk 'BEGIN {sites[\"大众runoob\公众]=\"大众www.runoob.com\"大众;sites[\"大众google\"大众]=\"大众www.google.com\"大众delete sites[\"大众google\公众];print fruits[\公众google\公众]}'多维数组

AWK 本身只支持多维数组,不过我们可以很随意马虎地利用一维数组仿照实现多维数组。

如下示例为一个 3x3 的三维数组:

100 200 300400 500 600700 800 900

以上实例中,array[0][0] 存储 100,array[0][1] 存储 200 ,依次类推。
为了在 array[0][0] 处存储 100, 我们可以利用如下语法: array[\"大众0,0\公众] = 100。

我们利用了 0,0 作为索引,但是这并不是两个索引值。
事实上,它是一个字符串索引 0,0。

下面是仿照二维数组的例子:

$ awk 'BEGIN {array[\公众0,0\公众] = 100;array[\"大众0,1\公众] = 200;array[\"大众0,2\公众] = 300;array[\公众1,0\"大众] = 400;array[\公众1,1\"大众] = 500;array[\"大众1,2\公众] = 600;# 输出数组元素print \"大众array[0,0] = \公众 array[\"大众0,0\"大众];print \公众array[0,1] = \公众 array[\"大众0,1\"大众];print \公众array[0,2] = \"大众 array[\公众0,2\"大众];print \"大众array[1,0] = \公众 array[\公众1,0\公众];print \"大众array[1,1] = \"大众 array[\公众1,1\"大众];print \"大众array[1,2] = \公众 array[\"大众1,2\"大众];}'

实行上面的命令可以得到如下结果:

array[0,0] = 100array[0,1] = 200array[0,2] = 300array[1,0] = 400array[1,1] = 500array[1,2] = 600

在数组上可以实行很多操作,比如,利用 asort 完成数组元素的排序,或者利用 asorti 实现数组索引的排序等等。

需求:将相同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;

实在都是一些细节问题。

篇幅有限,这里就不写更多案例了,后面会分享更多关于自动化运维(devops)内容,感兴趣的朋友可以关注下。

标签:

相关文章

QQ聊天恶搞代码技术背后的趣味与风险

人们的生活越来越离不开社交软件。在我国,QQ作为一款历史悠久、用户众多的社交平台,深受广大网民喜爱。在QQ聊天的过程中,恶搞代码的...

SEO优化 2025-03-02 阅读1 评论0

Python代码截屏技术与应用的完美融合

计算机屏幕截图已经成为人们日常生活中不可或缺的一部分。无论是分享工作成果、记录游戏瞬间,还是保存网页信息,屏幕截图都发挥着重要作用...

SEO优化 2025-03-02 阅读1 评论0

QQ无限刷礼物代码技术突破还是道德沦丧

社交平台逐渐成为人们生活中不可或缺的一部分。QQ作为我国最具影响力的社交软件之一,其丰富的功能吸引了大量用户。近期有关QQ无限刷礼...

SEO优化 2025-03-02 阅读1 评论0