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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 斜投影矩阵的性质_锥体体积怎么推导

    斜投影矩阵的性质_锥体体积怎么推导参考网址:https://gameinstitute.qq.com/community/detail/106203翻译http://www.terathon.com/lengyel/Lengyel-Oblique.pdf原文http://www.lsngo.net/2018/01/07/graphics_mirrorcamera_2/参考书籍:Mathematics.for.3D…

    2022年9月28日
    2
  • 华为交换机配置不同vlan不同网段互通[通俗易懂]

    华为交换机配置不同vlan不同网段互通[通俗易懂]在一台交换机中实现不同vlan不同网段相互通信Pc1:Pc2:Sw1:<Huawei>system-view1、创建vlan[Huawei]vlan2[Huawei-vlan2]quit[Huawei]vlan3[Huawei-vlan3]quit2、进入接口配置[Huawei]interfaceGigabitEthernet0/0/1[Huaw…

    2025年9月7日
    14
  • localdatetime 转 date_datetime.date.today()

    localdatetime 转 date_datetime.date.today()Date与Java8的时间之间的相互转换必须通过一个中间类Instant。importjava.time.*;importjava.util.Date;/***日期转换工具类**@authorLenovo*/publicclassDateUtil{publicstaticLocalDateTimedate2LocalDateTime(Datedate){//returndate.toInstant().atZone(Zo

    2022年9月1日
    4
  • 录屏软件Kap使用经验分享「建议收藏」

    录屏软件Kap使用经验分享「建议收藏」Kap是一款非常实用又简单的录屏软件。https://getkap.co/点击右上角的下拉菜单GETKAP,选择对应你的MACOS的版本。这个到底要选择哪个呢?点击你MACOS系统左上角的白苹果图标,点击关于本机查看里面处理器这行:如果是Intel处理器就选用DownloadforApple(Intel)如果是其他处理器,就是选用DownloadforApple(M1)点击Chrome浏览器里的下载内容找到你刚才下载的软件记录点击在Finde

    2022年9月25日
    2
  • 详解react hooks(含高阶组件)

    详解react hooks(含高阶组件)一 面试中出现的关于 hooks 的题目 1 简单介绍下什么是 hooks hooks 的优点 ReactHooks 是 react 团队研发的 它主要有两方面作用 用于在函数组件中引入状态管理和生命周期方法取代高阶组件和 renderprops 来实现抽象和可重用性在 hooks 出现之前 只有在类组件中可以使用本地状态管理和生命周期方法 函数组件只能是无状态组件 因为函数组件使用便利优雅 已经被广泛使用 后期如果函数组件需要承担一些副作用 只能把它重构成类组件 hooks 的出现就不需要重构了 它帮助函数组

    2025年10月4日
    4
  • 51单片机iic通信例程_linux移植8位单片机

    51单片机iic通信例程_linux移植8位单片机移植好的源码下载:http://download.csdn.net/detail/lxj_com2006/3746433Keil3C518.18注册版下载:http://download.csdn.net/detail/lxj_com2006/3746501网络抓包工具下载:http://download.csdn.net/detail/lxj_com2006/3746594

    2022年10月21日
    3

发表回复

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

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