Shell三剑客:awk(awk编辑编程)五

一、前言

  • AWK 可以使用关联数组这种数据结构,索引可以是数字或字符串。
  • AWK关联数 组也不需要提前声明其大小,因为它在运行时可以自动的增大或减小。

二、数组语法格式

  • array_name[index]=value
  • array_name:数组的名称
  • index:数组索引
  • value:数组中元素所赋予的值 

三、创建数组

        定义了一个站点(sites)数组,该数组的索引为网站英文简称,值为网站访问地址

[root@192 ~]# awk 'BEGIN {
> sites["liang"]='www.liang.com';
> awk 'BEGIN {
sites["liang"]='www.liang.com';^C
[root@192 ~]# awk 'BEGIN {
sites["liang"]="www.liang.com";
> sites["google"]="www.google.com"
> print sites["liang"] "\n" sites["google"]
> }'
www.liang.com
www.google.com

Shell三剑客:awk(awk编辑编程)五_第1张图片 

四、访问数组元素

        访问数组元素语法格式:array_name[index]

#访问数组元素
[root@192 ~]# awk -F: '{username[++i]=$1} END{print username[1]}' /etc/passwd
root
[root@192 ~]# awk -F: '{username[i++]=$1} END{print username[1]}' /etc/passwd
bin
[root@192 ~]# awk -F: '{username[i++]=$1} END{print username[0]}' /etc/passwd
root

#按元数个数遍历
[root@192 ~]# awk -F: '{username[x++]=$1} END{for(i=0;i

Shell三剑客:awk(awk编辑编程)五_第2张图片 

Shell三剑客:awk(awk编辑编程)五_第3张图片 

Shell三剑客:awk(awk编辑编程)五_第4张图片 

五、删除数组元素

        删除数组元素语法格式 使用 delete 语句来删除数组元素,语法格式如下:delete array_name[index] 

        删除数组元素 删除数组中的 google 元素(删除命令没有输出):

[root@192 ~]# awk 'BEGIN {
> sites["liang"]="www.liang.com";
> sites["google"]="www.google.com"
> delets sites["google"];
> print fruits["google"]
> }'

Shell三剑客:awk(awk编辑编程)五_第5张图片 

六、多维数组 

        AWK 本身不支持多维数组,不过我们可以很容易地使用一维数组模拟实现多维数组。

        模拟二维数组

[root@192 ~]# 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]=100
array[0,1]=200
array[0,2]=300
array[1,0]=400
array[1,1]=500
array[1,2]=600
#实例中,array0 存储 100,array0 存储 200 ,依次类推。要在 array0 处存储 100, 使用: array["0,0"] = 100。使用 0,0 作为索引,这并不是两个索引值,而是一个字符串索引 0,0。

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

Shell三剑客:awk(awk编辑编程)五_第6张图片

 

 

 

 

你可能感兴趣的:(Shell,linux,bash,shell)