【问题标题】:Declaring all elements of an associative array in a single statement - AWK在单个语句中声明关联数组的所有元素 - AWK
【发布时间】:2013-08-07 00:16:06
【问题描述】:

我对@9​​87654321@ 还很陌生,我正在尝试弄清楚如何一次性声明关联数组的所有元素。例如,如果我想在 Python 中声明一个关联数组(实际上就是字典),我会这样做:

numbers = {'uno': 1, 'sero': 0}

现在,awk 是否可以将下面的两行代码转换为一行?

 numbers["uno"] = 1
 numbers["sero"] = 0

【问题讨论】:

    标签: awk associative-array gawk


    【解决方案1】:

    据我所知,AWK 没有数组字面量,但此脚本演示了您可以做些什么来接近:

    BEGIN {
        split("uno|1|sero|0",a,"|");
        for (i = 1; i < 4; i += 2) {b[a[i]] = a[i+1];}
    }
    END {
        print b["sero"];
        print b["uno"];
    }
    

    当然,你总是可以创建一个可以像这样调用的函数

    newarray("uno", 1, "sero", 0);
    

    或喜欢

    newarray("uno|1|sero|0");
    

    【讨论】:

      【解决方案2】:

      没有。最好的办法是:

      $ awk 'BEGIN {
          # populate the "numbers" array:
          split("uno:1,sero:0",a,/[:,]/)
      
          for (i=1;i in a;i+=2)
              numbers[a[i]] = a[i+1]
      
          # print the "numbers" array:
          for (i in numbers)
              print i, numbers[i]
      }'
      uno 1
      sero 0
      

      【讨论】:

        猜你喜欢
        • 2011-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-29
        • 1970-01-01
        • 2021-06-06
        • 2020-01-15
        • 1970-01-01
        相关资源
        最近更新 更多