awk编程——数组
2014-07-02 00:11
204 查看
数组
定义数组
aa=(1 2 3 4 5 6)这些值会存储在以0为起始索引的连续位置上
aa[1]="www"
aa[2]="sss"
数组的第一个值、第二个值,以此类推。
关联数组
关联数组是指数组的索引不仅仅是数字,也可以是字符串,关联数组在索引和数组元素值之间建立起关联,对每一个数组元素,awk自动维护了一对值:索引和数组元素值。关联数组的值无需以连续的地址进行存储。awk的所有数组都是关联数组。如:array[09]制定一个数组值,如果换成array[9]就不能指定与array[09]相同的值。
[root@ns1 ~]# awk 'BEGIN{data[10.15]="1200";CONVFMT="%d";printf("<%s>\n",data[10.15])}' <> #所以此处结果输出为空值
split函数
split(a,b,c)函数将字符串以c为分隔符,将a字符串拆分为字符串数组元素存放在b中split函数用法
[root@ns1 ~]# awk 'BEGIN {print split("abc/def/xyz",str,"/")}' 3 #将字符串分成了3个元素
[root@ns1 ~]# cat array.awk #!/bin/awk -f BEGIN {FS=" "} { split($1,name,","); for(i in name) print name[i]} #用for循环将name数组的内容打印出来 [root@ns1 ~]# cat sw li hao ss ssssssssss zhang ju ss ssssssssss wang bin ss sssssssssss zhu lin ss ssssssssss [root@ns1 ~]# ./array.awk sw li zhang wang zhu
数组形式的系统变量
awk系统变量中有两个变量是以数组的形式提供的:ARGV和ENVIRON。ARGC是ARGV数组中元素的个数,从ARGV[0]开始,到ARGV[ARGC-1]结束。#下面是脚本及素材内容
[root@ns1 ~]# cat ss.awk #!/bin/awk -f BEGIN {FS=","; if(ARGC>2) { #ARGC未定义默认为0,小于2进入循环 name=ARGV[1]; delete ARGVp[1] } else { while(!name){print "enter a name"; getline name< "-"} #利用getline函数将输入值赋给name变量 } } $1~name {print $1,$3} #第一个域与姓名模糊匹配,成功输出第一、三个域 [root@ns1 ~]# cat sw li hao,ss,11111111111 zhang ju,ss,2222222222 wang bin,ss,33333333333 zhu lin,ss,44444444444
#下面是脚本执行结果 [root@ns1 ~]# ./ss.awk sw enter a name li hao li hao 11111111111
相关文章推荐
- shell文本过滤编程(六):awk之循环判断及数组
- 在ASP编程中使用数组
- 在VB.NET编程中使用数组
- C编程之旅:数组的简单使用
- 编程练习——求无序数组第k小的数
- 通过临时文件的方法把awk中的数组赋值给shell中的数组
- 编程练习——可变长bit数组(bitArray)
- C编程之旅:数组和斐波那契数列
- [c专家编程学习] 数组初始化
- 数组和指针 [C专家编程]
- 最近碰到个问题,关于php扩展编程如何返回数组的问题
- 数组 (C# 编程指南)
- PHP编程“数组”的基础知识
- 使用 ref 和 out 传递数组(C# 编程指南)
- 数组 (C# 编程指南)
- browser 编程中 Delphi 如何返回数组给 javascript
- 在ASP编程中使用数组
- Linux shell编程之awk&sed用法详解
- C编程之旅:数组的逆序输出
- Linux shell编程之awk与sed使用详解