
腾讯云3年/5年服务器:点击抢每日限量秒杀名额 | 阿里云服务器99元/年:速抢优惠名额 |
腾讯云双十一:点击速抢9999元代金券 | 阿里云双十一:点击速抢5580元满减券 |
腾讯云新客无门槛满减券:限量速抢 | 阿里云活动中心优惠券:点击速抢 |
今天本站向您展示了如何在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数组。你学到什么知识或技能了吗?如果你想学习更多的技能或丰富你的知识储备,请关注本站


8核16G CVM服务器S5 3048元/15个月:点此直达
注意:以上特价轻量服务器限制条件为“产品首单特惠”,如果你的腾讯云账号已经是老用户,建议重新注册一个腾讯云账号,如果你是新用户符合条件,那么无脑入,这个CPU内存带宽配置,价格确实便宜,值得买!
