网站首页网站地图google地图百度地图学习库RSS在线PSPS联盟素材下载  PS视频教程专题 PS爱好者教程网www.psahz.com PS教程自学网QQ群

linux awk数组学习心得及awk数组操作详细介绍 用awk进行文本处理

时间:2016-07-31 16:50 来源:linux awk数组 作者:awk数组 阅读:
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去定位这个元素。

    PS笔刷下载 PS滤镜下载 PS形状下载 PS样式下载 PS动作下载 PS图案下载