2015-10-06 50 views
0

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

有人可以帮我下面的声明吗?我把它放在角度来看,因为我知道分裂和循环在做什么。

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] 

回答

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 ['age']设置为10
  • 类似地,x ['lname']设置为smith并且x ['fname' ]设置为'约翰'
+0

非常感谢你! – Sean

+0

不客气,@霍尔姆斯。如果您发现其中一个有价值的答案,谨慎的做法是将其标记为已接受,以便将您的问题解决。 – zedfoxus

+0

谢谢,刚刚意识到我可以这样做:D – Sean

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

这不是创建一个multidementional阵列。

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