linux awk数组学习心得及awk数组操作详细介绍 用awk进行文本处理
awk的数组跟其他程序设计语言的数组有所不同:
1、不需要正式定义,一个数组在使用时被定义;
2、数组元素的初始值为0或空字符串,除非他们被显示的指定初始化;
3、数组可以自动扩展;
4、下标可以使字符串。
------------------------------------------------------------------
awk中,数组可以通过下标赋值,如下:
arr[0]=123
也可以使用字符串作为下标:
arr["one"]=123
-----------------------------------------------------------------------------
split函数的返回值是数组长度。
zoer@ubuntu:~$ echo ""|awk 'BEGIN{a="here is test";len=split(a,arr," ")}{print len}'
3
-----------------------------------------------------------------------------
求数组长度的方法:
length(arr)
--------------------------------------------------------------------------------
输出数组内容
输出数组内容的时候,可以使用for ... in ...的形式。由于awk的数组是关联数组,所以用这种形式输出是乱序的。
root@ubuntu:/home/zoer# echo ''|awk 'BEGIN{a["one"]=1;a["two"]=2;a["three"]=3;}{for (k in a)print a[k]}'
3
1
2
如果想要得到有序数组,那么需要通过下标来获得。注意:awk的数组下标是从1开始的。与c++或者java语言的不同。
-------------------------------------------------------------------------
判断一个元素是不是在数组中
使用如下形式:
if ( k in arr)
通过这种方法判断数组中是否包含”key”键值。使用例子如下:
zoer@ubuntu:~$ echo ""|awk 'BEGIN{a="here is test";len=split(a,arr," ")}{if(1 in arr)print "kkkkk"}'
kkkkk
zoer@ubuntu:~$ echo ""|awk 'BEGIN{arr["one"]=1;arr["two"]=2;arr["third"]=3;}{if("one" in arr)print arr["one"]}'
1
上面两个例子分别演示了的数字下标和指定的字符串下标。
------------------------------------------------------------------
删除数组元素:
delete arr['key']可以用于删除数组元素
zoer@ubuntu:~$ echo ""|awk 'BEGIN{a="here is test";len=split(a,arr," ")}{delete arr[1];for(k in arr)print arr[k]}'
is
test
上面的这个例子,删除了下标为1的元素,那么here就没有输出出来了。
也可以使用delete arr来删除整个数组。
----------------------------------
本页也直接展示了awk中,split的用法。
-----------------------------------------
关联数组
在awk中,数组都是关联数组。那么什么是关联数组呢?关联数组在数组下标和元素之间建立了一种关联。对于数组中的每个元素都有两个相关的值:元素的下标和元素的值。这些元素不像传统的数组那样按照一定的顺序存储。尽管在awk中数组下标也可以是数据行的 。但是这些下表的意义和其他编程语言中的所表示的意义不同----他们不一定代表数据在数组中的位置。
有时候,数值型下标和字符串型下标之间的区别还是很大的。比如说使用04这个字符串作为下标,那么就不能用数字4去定位这个元素。
- ·Linux procinfo命令使用教程,学习procinfo命令的用法
- ·Linux spell命令使用教程,学习spell命令的用法及spel
- ·Linux df命令使用教程,学习df命令的用法及df命令语法
- ·Linux id命令使用教程,学习id命令的用法及id命令语法
- ·Linux dip命令使用教程学习,dip命令的用法与实例讲解
- ·Linux zipinfo命令使用教程学习,info命令语法动手详
- ·Linux sort命令使用教程学习惯,sort命令语法详细讲解
- ·Linux ar命令的用法及实例学习-ar命令语法的运用技巧
- ·Linux login命令的用法及实例讲解
- ·linux find命令使用教程及find命令的用法与实例讲解
- ·linux dump命令用法详解。dump命令学习心得。dump命令
- ·linux kill命令使用教程,kill函数命令学习心得。
- ·linux awk数组学习心得及awk数组操作详细介绍 用awk进
- ·Linux Unzip命令使用教程,Linux zip命令使用教程
- ·linux中echo命令详解学习,echo命令的使用方法。
- ·uniq命令详解-linux uniq语法使用教程学习-uniq的用法
- ·AngularJS入门教程-AngularJS教程-从零开始学习Angula
- ·AngularJS入门教程快速开始,从零开始学习AngularJS的
- ·AngularJS入门教程:导言和准备
- ·AngularJS入门教程00:引导程序
- ·AngularJS入门教程01:静态模板
- ·AngularJS入门教程02:AngularJS 模板
- ·AngularJS入门教程03:迭代器过滤
- ·AngularJS入门教程04:双向绑定