14Awk可以使用数组
Awk可以使用数组,但是awk的数组下标从1开始,例如
myarray[1]=”betty”
myarray[2]=123
 
{
for(i in myarray)
  print myarray[i];
}
 
但这里存在的一个问题是不敢保证print的输出顺序,是betty 123 还是123 betty,这里便牵扯到一个问题,由于awk把所有的东西都当做字符串来处理,那么数组的下标是否也可以作为字符串来处理呢?答案是肯定的
例如
myarray[“name”]=”betty”
myarray[“num”]=123
 
15格式化输出
大部分情况下print会完成任务,但是有些情况下,我们需要更多详细的信息,这时awk提供了printfsprintf函数,例如
printf(“%s got %d record”,”betty”,123)
 
16 字符串函数
awk中有很多字符串函数,从而使字符串的各种处理更加的简单方便,因为它不像Pythoncc++那样讲字符串看做字符数组,二是看做一个统一的整体。
mystring=”How are you doing today?”
length()#用来计算字符串的长度  eg. print length(mystring) 输出为:24 为字符串的长度
index #返回子字符串在实际字符串中的位置
          eg. print index(mystring,”you”)  awk将会打印9,为“you“在字符串中的位置
tolower()  #将字符串转换为小写装填
toupper()   #将字符串转换为答谢字符
substr()    #从字符串中抽取子字符串,substr参数格式为substr(mystring, startpos, len)
           # 分别为母字符串,字符串开始位置,字符串长度
          eg. print substr(mystring, 9 ,3) 将会输出you
match()   #match()index()非常相似,但是它搜索的不是子字符串,而是搜索正则表达式                   的,返回值为匹配的位置,它还设置有两个变量,RSTARTRLENGTH用来返回匹配           的位置,eg. print match(mystring,/you/) RSTART RLENGTH  输出为:9 9 3
sub() && gsub() #字符串替换,前者只对最先找到的替换,后者对全部的替换
          sub(/o/,”O”,mystring) print mystring 输出为:hOw are you doing today?
          gsub(/o/,”O”,mystring) print mystring 输出为: How are yOu dOing tOday?
split()   #eg.split(“1,2,3,4,5”,num,”,”)  print num[1] num[2]将输出1,2
        意义为:将最先的字符串,按照最后一个参数定义的符号为分隔符,然后将分割出来的部分依次存入参数二定义的数组中。