awk 数组学习

awk 数组学习awk是Linux一个必不可少的文本处理工具,其编程简单,功能强大。其中awk处理文本的几块比较常用:1、行分隔;2、正则表达式匹配;3、字符串处理;4、awk数组。接下来主要介绍一下awk数组的相关内容。awk数组特点:(1)、是一种关联数组(AssociativeArrays),下表可以是数字也可以是字符串,(2)、数组名和元素无需提前声明,(3)、无需指定数…

大家好,又见面了,我是你们的朋友全栈君。

awk是Linux一个必不可少的文本处理工具,其编程简单,功能强大。其中awk处理文本的几块比较常用:1、行分隔 ; 2、正则表达式匹配 ;3、字符串处理 ; 4、awk数组。接下来主要介绍一下awk数组的相关内容。
awk数组特点:
(1)、是一种关联数组(Associative Arrays),下表可以是 数字 也可以 是字符串, 
(2)、数组名 和 元素 无需提前声明,
(3)、无需指定数组元素的个数
所以awk的数组使用非常灵活。

1、建立awk数组

awk ‘BEGIN{ {a[“你好”]=1} for(item in a) {print item;print a[item]}}’

awk 定义一个关联数组,并输出 关联数组的 key 值 和 value; key值可以通过for( item in a )来获取, value 通过 a[item]来获取;
awk ‘BEGIN{ {a[“你好”]=1;a[“helloworld”] = 3} {print length(a)}}’
获取数组长度的函数  length() ; 

2、读取awk数组中的数据的值

awk  ‘BEGIN{
{a[1] =”x”;a[2]=”b”;a[3]=”c”}  for(item in a){printf(“%d is %s\n”,item,a[item])}}’
ans:
1 is x2 is b3 is c使用 for( item in array) 遍历,  这种遍历获取到的数据时随机的。

awk  ‘BEGIN{
{a[1] =”x”;a[2]=”b”;a[3]=”c”}  for( i = 0;i<length(a);i++){printf(“%d is %s\n”,i,a[i])}}’
ans:
0 is 1 is x2 is b3 is c使用 for(i; i< len ; i++) 遍历

3、多维数组, array[index1,index2….]  SUBSEP是数组的下标分隔符,默认为 “\034″。可以事先设定 SUBSEP,也可以在SUBSEP的位置输入分隔符

awk  ‘BEGIN{ {SUBSEP=”|”;a[“x”,”y”]=”hello world”;} for(item in a){print item ;print a[item]}}’
ans:
x|yhello world上述是通过SUBSEP设置分隔符,也可以直接在分隔符位置输入分隔符。

[root@SJSWT46-145 awkFile]# awk  ‘BEGIN{ {a[“x””,””y”]=”hello world”;} for(item
ans:
x,yhello world
4、删除数组或者删除数组的元素

awk  ‘BEGIN{ {a[“x””,””y”]=”hello world”;} for(item in a){print item ;print a[item]} {print “—-delete array—“}{delete a} for(item in a){print item} }’
ans:
x,yhello world—-delete array—
删除数组中的某一个元素:
 awk  ‘BEGIN{
{a[1] =”x”;a[2]=”b”;a[3]=”c”}  for( i = 0;i<length(a);i++){printf(“%d is %s\n”,i,a[i])} {print “*** del ***”} {delete a[2]} for( i = 0;i<length(a);i++){printf(“%d is %s\n”,i,a[i])}}’
ans:

0 is 1 is x2 is b3 is c*** del ***0 is 1 is x2 is 3 is c
5、数组的排序, awk提供asort函数实现对数组的值进行排序,注意:排序之后数组的下标改将从1开始 ; 更高的版本提供 关联数组下标的排序。

 awk  ‘BEGIN{
{a[0] = “z” ;a[1] =”x”;a[2]=”b”;a[3]=”c”}  for( i = 0;i<length(a);i++){printf(“%d is %s\n”,i,a[i])} {asort(a)} {print “*********”} for( i = 0;i<length(a);i++){printf(“%d is %s\n”,i,a[i])}}’
ans:
0 is z1 is x2 is b3 is c*********0 is 1 is b2 is c3 is x4 is z
————————————————
版权声明:本文为CSDN博主「eten」的原创文章,遵循CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/leo115/article/details/8720663

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/161636.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • springboot+eureka集群搭建

    springboot+eureka集群搭建eureka集群搭建此集群共有三个eureka台组成eureka集群的核心思想就是互相注册,相互守望,你中有我,我中有你(个人理解)意思就是第一台机器01注册地址defaultZone中的地址是02,03的,02的注册地址是01,03的。03的注册地址是01,02的首先新建三个项目来代表eureka的三台机器父类的pom文件大家可以一起用<?xmlversion=”1.0″encoding=”UTF-8″?><projectxmlns=”http://maven.ap

  • divmod的使用[通俗易懂]

    divmod的使用[通俗易懂]今天在学习pandas的官方文档时,遇到了divmod这个函数,调用了help(divmod)。pandas返回了一行话如下:divmod(x,y,/)Returnthetuple(x//y,x%y).#即x//y返回的是x除以y以后的整数部分,#x%y返回的是x除以y后的余数部分下面看一下,其在pandas中是如何使用的:>>>s=pd.Series(np.arange(10))>>>s001

    2022年10月26日
  • 基于支持向量机的机械零件剩余寿命区间估计

    基于支持向量机的机械零件剩余寿命区间估计

    2021年11月21日
  • 如何高效学习PLC

    如何高效学习PLC【1】电工原理和电机原理一定要懂,简单的就记背也要背下来,比如马达容量1KW2A,正反转,星三角接线,电线容量。电阻,电感,电容的特性等;【2】液压和气动也要掌握,比如压力换算,压力和电流的比例换算,这在有压力控制上都要用到;【3】电线截面要会看,线拿到手就知道几平方的,还有什么电器上该用什么线,比如马达就用4线的,3根主线1根接地。从变频器上出来的要用屏蔽线;【4】机修也要会做,特别是螺丝…

    2022年10月19日
  • bootstrap的datetimepicker_bootstrap日期选择器

    bootstrap的datetimepicker_bootstrap日期选择器先说datepicker。github上的地址是:https://github.com/eternicode/bootstrap-datepicker。效果如下:在bundle里面引用添加js和

  • [学习opencv]图像读取写入,加减乘除

    [学习opencv]图像读取写入,加减乘除

发表回复

您的电子邮箱地址不会被公开。

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