• 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

    没有做不到,只有坚持不到
  • 相关阅读:
    mysql,apache,php的关系
    简析 Tomcat 、Nginx 与 Apache 的区别
    Linux中涉及到环境变量的文件
    如何在Linux启动的时候执行一个命令
    sed的额外用法(网摘)
    shell脚本执行方式
    在rhel7上搭建centos7的yum源
    MYSQL三种安装方式--二进制包安装
    ssh连接不上排查方法总结
    MySQL启动很慢的原因
  • 原文地址:https://www.cnblogs.com/confident1012/p/6097620.html
Copyright © 2020-2023  润新知