linux中利用awk对数组进行排序

数组

在排序前需要对数组有所了解,数组是用于存储一系列值得变量,这些值之间通常是由联系的,可通过索引来访问数组的值,索引需要用括号括起来,基本格式如下:

array[index]=value

awk数组无须定义数组类型和大小而可以直接赋值使用。

1.关联数组

  关联数组是指数组的索引可以是字符串,也可以是数字。对于每个数组元素,awk会自动建立索引-数值元素值对。这里索引不代表该数值存储地址信息。

可以用for循环来访问数组,语法如下:

  for (variable in array)

    do something with array[variable]

2.split函数

这里介绍split函数,是因为它能放回一个数组,split(r,s,t)指的是将r以t为分隔符分隔,并将返回的数组赋给s。接下来就可以对s进行遍历排序了。

这里举个简单的例子使用split:

创建一个脚本array.awk如下:

#!/usr/bin/awk -f    --这里指明awk的路径,-f为调用该脚本时的选项

BEGIN {FS=","} --BEGIN,循环前的操作步骤,以逗号为分隔符

{split($1,name," ");

for(i in name) print name[i]} --循环主体,将域1中以空格为分隔符分隔,将返回的数组赋给name,然后对name遍历。

排序:

1. awk 'BEGIN {info="I am a boy";split(info,str," ");for(i=1;i<=length(str);i++) {print i str[i]}}' 以上是个简单的排序

2.awk 'BEGIN {data[1]=100;data[3]=200;data[5]=300;for(i in data) {print(i,data[i])|"sort -k1 -n -r"}}' 以上为通过管道符将要打印的内容传给sort排序后再打印。

上面的例子可以写成脚本data_sort.awk:

#!/usr/bin/awk -f

BEGIN {

    data[1]=100;

    data[3]=200;

    data[5=300;

    for(i in data){

      print i,data[i]|"sort -k1 -n -r"

      }

    }

执行chmod u+x data_sort.awk  ./data_sort.awk

上一篇:Ubuntu 14.04 更新gcc版本至4.9.2


下一篇:ubuntu 14.04 更新 gcc/g++ 4.9.2