怎么在linux中对awk数组进行操作

2022年 10月 17日 发表评论
腾讯云正在大促:点击直达 阿里云超级红包:点击领取
免费/便宜/高性价比服务器汇总入口(已更新):点击这里了解

今天本站向您展示了如何在linux中操作awk阵列。内容简洁易懂,一定会让你眼前一亮。希望通过这篇文章的详细介绍,你能有所收获。

一、定义方法

1:您可以使用数值作为数组索引(下标)

塔雷[1]=“程默”

Tarray[2]="800927 "

2.您可以使用字符串作为数组索引(下标)

Tarray["first"]="cheng "

Tarray["last"]="mo "

Tarray["出生"]="800927 "

在使用中,打印塔雷[1]将得到“程默”,而打印塔雷[2]和打印[“出生”]都将得到“800927”。

二、数组相关函数

代码如下:

[程默@本地主机~]$ awk -版本

GNU Awk 3.1.5 /p

p的使用版本在3.1以上,以下功能在不同版本中不一定相同

获取数组长度(由length方法使用)

代码如下:

[程默@localhost ~]$ awk 'BEGIN{info='这是一个测试';lens=split(info,tA,' ');打印长度(tA),镜头;}'

4 4

Length返回字符串和数组的长度。如果split将字符串分割成数组,还会返回分割得到的数组长度。/p

p(由p(asort) :使用

[程默@localhost ~]$ awk 'BEGIN{info='这是一个测试';拆分(信息,Ta ' ');打印asort(Ta);}'

Asort对数组进行排序并返回数组长度。

输出数组内容(无序和有序输出):

代码如下:

[程默@localhost ~]$ awk 'BEGIN{info='这是一个测试';拆分(信息,Ta ' ');for(k in tA){print k,Ta[k];}}'

4测试

1 it

2是

3 a

forhellip在输出中,因为数组是关联的,所以默认情况下是无序的。所以通过forhellipIn获取一个无序数组。如果需要得到有序数组,需要用下标来得到。

[程默@localhost ~]$ awk 'BEGIN{info='这是一个测试';tlen=split(info,tA,' ');for(k=1;k=tlenk ){print k,Ta[k];}}'

1 it

2是

3 a

4测试

注:数组下标从1开始,与C数组不同。

判断键值的存在并删除键值:

代码如下:

一个错误的判断方法:

[程默@ localhost ~]$ awk ' BEGIN { tB[' a ']=' a1 ';tB[' b ']=' B1 ';if(tB['c']!=' 1 '){打印'找不到';};for(k in tB){print k,Tb[k];}}'

找不到

a1

b b1

c

上面有一个奇怪的问题,TB ["c"]没有定义,但是在循环过程中,发现键值已经存在,其值为空。这里需要注意的是,awk数组是一个关联数组,只要数组引用了它的键,就会自动创建一个修改序列。

正确的判断方法:

[程默@ localhost ~]$ awk ' BEGIN { tB[' a ']=' a1 ';tB[' b ']=' B1 ';if('c '表示Tb){打印' ok ';};for(k in tB){print k,Tb[k];}}'

a1

b b1

这样if(数组中的key)判断数组中是否包含“key”的键值。

删除键值:

[程默@ localhost ~]$ awk ' BEGIN { tB[' a ']=' a1 ';tB[' b ']=' B1 ';删除Tb[' a '];for(k in tB){print k,Tb[k];}}'

b b1

删除数组[键]可以删除,对应数组键的顺序值。/p

p

三、二维数组使用(多维数组使用)

代码如下:

awk的多维数组本质上是一维数组。更准确地说,awk不支持存储中的多维数组。Awk提供了一种逻辑模拟二维数组的访问方法。例如,允许数组[2,4]=1等访问。Awk使用一个特殊的字符串SUSPEP( 034)作为分区字段。在上面的例子中,存储在关联数组数组中的键值实际上是2344。/p

p类似于一维数组的成员检验。多维数组可以在数组中使用if(I,j)语法,但是下标必须放在括号中。

与一维数组的循环访问类似,多维数组使用(数组中的项)的语法来遍历数组。与一维数组不同,多维数组必须使用split()函数来访问单个下标组件。拆分(项目、子项目、子项目)/p

p[程默@localhost ~]$ awk 'BEGIN{ /p

pfor(I=1;I=9;I)

{

for(j=1;j=9;j)

{

tarr[i,j]=I * j;

打印I,' *,j,'=',tarr[i,j];

}

}

}'

1 * 1=1

1 * 2=2

1 * 3=3

1 * 4=4

1 * 5=5

1 * 6=6 /p

phelliphellip/p

p你可以通过引用数组[k,k2]得到数组的内容。/p

方法2: /p

p[程默@localhost ~]$ awk 'BEGIN{

for(I=1;I=9;I)

{

for(j=1;j=9;j)

{

tarr[i,j]=I * j;

}

}

for(m in tarr)

{/p

psplit(m,tarr2,SUSPEP);

打印tarr2[1],' *,tarr2[2],'=',tarr[m];

}

}'

以上内容是如何在linux中操作awk数组。你学到什么知识或技能了吗?如果你想学习更多的技能或丰富你的知识储备,请关注本站

小咸鱼

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: