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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Bug.PotPlayer播放视频上下、左右翻转

    Bug.PotPlayer播放视频上下、左右翻转2018/8/8 PotPlayer作为一款全能、绿色的视频播放器倍受喜爱。在使用中偶尔可能会出现播放视频上下倒置、左右翻转的情况,一时让人摸不着头脑。其实是误触了快捷键导致图像颠倒,再次按下快捷键即可恢复。上下倒置的情况,这时在播放界面按下“Ctrl+V”快捷键;界面左上角提示“图像上下翻转:关闭”,视频播放恢复正常。左右翻转时,如果无字幕其实并不影响观看;这时按下快捷键“Ctrl+…

    2022年5月12日
    163
  • 视频教程:Java从入门到精通

    视频教程:Java从入门到精通原文:http://www.pconline.com.cn/pcedu/empolder/gj/java/0606/815015.html《Java从入门到精通》视频教程由孙鑫老师录制(作者网站:http://www.sunxin.org),教程通俗易懂,内容全面,带领Java初学者从入门到精通,快速掌握Java编程语言。  说明:学习本套教程,您需要了解一些基本的编程开发基础知识,例如…

    2022年5月16日
    34
  • c++ 迭代器失效_c++迭代器是什么

    c++ 迭代器失效_c++迭代器是什么C++迭代器Iterator

    2025年7月28日
    0
  • 微型计算机原理与接口技术知识点总结_微型计算机接口技术答案

    微型计算机原理与接口技术知识点总结_微型计算机接口技术答案记得刚要上这门课的时候,学长就跟说这是一门很重要很有用的课程,对经后的一些课程设计或者是做一些项目之类的都有很大的帮助,特别是对毕业就想找工作的人来说学会单片机就更重要了,所以我一直都很认真的在听课,但是由于去参加北京市的电子设计大赛,老师允许我们不用做这门课的实验,再加上这门课平时就没有什么要做的作业之类的,练得太少了,可以说几乎没有实践的机会,也因此对所学的知识不知道该怎么运用,只是简单的停留…

    2022年9月1日
    2
  • VUE 网页生成 PDF[通俗易懂]

    VUE 网页生成 PDF[通俗易懂]保存当前网页为PDF格式到本地一、安装依赖1.npminstall–savehtml2canvas//作用是html转图片2.npminstalljspdf–save//再将图片转为pdf二、设置格式函数importhtml2Canvasfrom’html2canvas’importJsPDFfrom’jspdf’exportdef…

    2022年5月16日
    125
  • 05-01-部署 WSUS on Windows 2019 Core

    05-01-部署 WSUS on Windows 2019 Core

    2021年7月2日
    84

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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