shell脚本之awk数组

shell脚本之awk数组一.数组格式数组是一个包含一系列元素的表.格式如下:abc[1]=”xiaohong”abc[2]=”xiaolan”解释:abc:为数组名称[1]、[2]:为数组元素下标,可以理解为数组的第1个元素、数组的第2个元素xiaohong、xiaolan:元素值例子1:定义数组,并且打印数组元素[root@tab0~]#awk’BEGIN{a[0]=”xiaohong”;a[1]=”xiaolan”;printa[0]}’xiaohong[root@tab0~]#awk

大家好,又见面了,我是你们的朋友全栈君。

一.数组格式

数组是一个包含一系列元素的表.
格式如下:

abc[1]=”xiaohong”
abc[2]=”xiaolan”

解释:

abc:为数组名称
[1]、[2]:为数组元素下标,可以理解为数组的第1个元素、数组的第2个元素
xiaohong、xiaolan:元素值

例子1:定义数组,并且打印数组元素

[root@tab0 ~]# awk 'BEGIN{a[0]="xiaohong";a[1]="xiaolan";print a[0]}'
xiaohong

[root@tab0 ~]# awk 'BEGIN{a[0]="xiaohong";a[1]="xiaolan";print a[1]}'
Xiaolan

例子2:打印出所有元素的下标

[root@tab0 ~]# awk 'BEGIN{a[0]="xiaohong";a[1]="xiaolan";for (i in a)print i;}'
0
1

解释:将a定义为循环中的取值列表。从数组中取出的是数组的所有元素的下标

例子3:我们将/etc/passwd/里边的第一类定义成数组

 [root@localhost ~]#:awk -F: '{ 
   {a[NR]=$1;}{print NR,a[NR];}}' /etc/passwd

例子4:利用数组统计每一个IP的访问量

[root@tab0 ~]# cat a
192.168.3.1
192.168.3.2
192.168.3.3
192.168.3.4
192.168.3.5
192.168.3.6
192.168.3.7
192.168.3.1
192.168.3.2
192.168.3.3
192.168.3.3
192.168.3.3
192.168.3.2
192.168.3.3
192.168.3.6
192.168.3.6
192.168.3.6
192.168.3.3
192.168.3.2
192.168.3.2

解决办法1:

[root@tab0 ~]# sort a |uniq -c | sort -nr
      6 192.168.3.3
      5 192.168.3.2
      4 192.168.3.6
      2 192.168.3.1
      1 192.168.3.7
      1 192.168.3.5
      1 192.168.3.4

解决办法2:

[root@tab0 ~]# cat test.sh
#!/bin/bash
awk '{ 
   
	list[$1]++
}
END { 
   
	max=0;
	for(i in list){ 
   
		if (list[i] > max)
		{ 
   
			max=list[i];s=i
		}	
	}
	print max,s
}' a

解释:

list是一个数组,以$1为下标做++运算,也就是说,当$1内容重复一次,它的值就+加一次。
max初始值是0 ,然后用数组中的每一个元素的值去和max比较,如果比max大,就把这个元素的值赋值给max,那么max最后的值一定是最大的,也就是重复次数最多的。但是我们此时不知道下标(也就是$1的内容)是多少,所以用s记录一下当时的下标

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161662.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 程序员3到5年薪资水平_程序员生活现状

    程序员3到5年薪资水平_程序员生活现状近日,程序员客栈对中国程序员薪资和生活现状做了一项调查,对全国29个省、直辖市及特别行政区的近55万优秀程序员进行了一次详细的调查。调查结果显示:22-34岁的程序员为这个群体的重要力量,工作年限为5-10年的程序员占了程序员群体的43.4%.工作三年后,程序员的跳槽次数会随着工作年限的增加而增加;73.0%的程序员在民营企业工作。年薪5-25万之间的程序员,占比高达66.3%,此外,59.2%的程序员并没有感受到因为疫情所带来的裁员大潮。程序员平均年薪从上图我们可

    2022年9月1日
  • c++之this指针详解

    c++之this指针详解1.this指针的用处:一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行。  例如,调用

    2022年5月13日
  • vue双向绑定数组和对象有什么区别_后端接收前端json数据

    vue双向绑定数组和对象有什么区别_后端接收前端json数据众所周知,vue中v-model会忽略所有表单元素的value、checked、selectedattribute的初始值而总是将Vue实例的数据作为数据来源。大部分情况,v-model是绑定一个对象的属性,但是如果数据库中的数据是一个数组,这种情况下,如果把数组转换成对象再绑定,然后再转换回去提交到数据库显然是一件工程量很大的事情,本着程序员偷懒的原则,我发现了一个便捷的方法,废话不多说,直接上干货。HTML代码如下:<!DOCTYPEhtml><htmllan.

    2022年9月14日
  • 父元素opacity属性对子元素的影响(子元素设置opacity无效)

    父元素opacity属性对子元素的影响(子元素设置opacity无效)问题来源于实践这段时间做了一个项目优化,对于原有的内容进行了重新设计实现,其中一项就是对于label标签添加hover层进行解释说明,最常用的办法及时label的容器设置relative,然后hover层作为它的子元素设置absolute,然后在使用label的hover伪类来控制hover层的显示和隐藏,这其中一个要求及时hover层必定要求能够遮住页面中其他的元素,所以最常用的办法是设置它…

    2022年5月25日
  • CSS3 Transition[通俗易懂]

    CSS3 Transition[通俗易懂]Transition简介Transition可以设置CSS属性的过渡效果,它有以下几个属性。transition-property用于指定应用过渡属性的名称transition-duration用于指定这个过渡的持续时间transition-delay用于指定延迟过渡的时间transition-timing-function用于指定过渡的类型transition-p…

    2022年7月13日
  • mysql(八)日志介绍

    mysql(八)日志介绍

    2021年9月13日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号