确定Awk中的哪些行

时间:2015-10-06 02:24:47

标签: awk gnu gawk

我是一个非常新的awk初学者。我正在阅读一个简单的循环语句,其中通过使用split()命令,我在循环开始之前定义了'a'数组,并在循环的每次迭代中定义了'b'数组。

有人可以帮我解决下面的陈述吗?我把它放在透视中,因为我知道splits和for循环正在做什么。

split($2,a,":");
for(i=1,i<length(a),i++){
split(a[i],b," ")

#I don't know what the statement below this line does.
#It appears to be creating a multidimensional thing?


x[b[1]]=b[2]

2 个答案:

答案 0 :(得分:1)

它看起来像一个单维数组。如果您的文本文件包含如下所示的一行,请说明一下:

1|age 10:fname john:lname smith|12345
  • 假设管道符号|的分隔符,您的$ 2将为age 10:fname john:lname smith
  • 按冒号:拆分将提供3项:age 10fname johnlname smith
  • for遍历这3个项目。它需要第一项age 10
  • 它被空间分割。 b [1]现在是年龄,b [2]现在是10
  • 数组x [&#39;年龄&#39;]设置为10
  • 同样,x [&#39; lname&#39;]设置为smith,x [&#39; fname&#39;]设置为&#39; john&#39;

答案 1 :(得分:0)

x[b[1]]=b[2]

它没有创建多元数组。

x是一个数组。它将数组键b [z]的值赋给b [z]。 z是我刚才使用的正整数。