zoukankan      html  css  js  c++  java
  • 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

    没有做不到,只有坚持不到
  • 相关阅读:
    Linux Mint---shutter截图软件
    Linux Mint---fcitx中文,日语输入法
    Linux Mint---安装docky
    Linux Mint---开启桌面三维特效
    Linux Mint---ATI显卡驱动安装篇
    Linux Mint---更新软件源
    Spring Cloud 微服务服务间调用session共享问题
    Jooq批量插入 batch
    idea安装SonarLint语法检测插件
    JVM到底是什么?
  • 原文地址:https://www.cnblogs.com/confident1012/p/6097620.html
Copyright © 2011-2022 走看看