shell脚本之awk数组
2021/7/16 7:08:03
本文主要是介绍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";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记录一下当时的下标
这篇关于shell脚本之awk数组的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-14后台交互资料入门指南
- 2024-11-14如何轻松创建项目环境:新手入门教程
- 2024-11-14如何抽离公共代码:初级开发者指南
- 2024-11-14Python编程入门指南
- 2024-11-14Python编程入门:如何获取参数
- 2024-11-14JWT 用户校验:简单教程与实践
- 2024-11-14Pre-commit 自动化测试入门指南
- 2024-11-14Python编程基础
- 2024-11-14Server Action入门教程:轻松掌握服务器操作
- 2024-11-14Server Component入门教程:轻松搭建服务器组件