• 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

    没有做不到,只有坚持不到
  • 相关阅读:
    算法导论4线性时间与暴力寻找最大子数组
    算法导论4.1DivideAndConquer寻找最大子数组
    算法导论2.3算法设计分治法合并排序
    算法导论第二章算法入门2.1 插入排序
    eclipse 从已经存在代码建工程
    centos6.3 eclipse cdt
    Cant open file /data/svn/dev/db/txn-current-lock: Permission denied的解决方法
    git命令的安装与github简单使用
    CentOS-6.3安装配置SVN
    github使用_转
  • 原文地址:https://www.cnblogs.com/confident1012/p/6097620.html
Copyright © 2020-2023  润新知