确定 Awk 中的行
Determining What Line Does in Awk
我是 awk 的新手。我正在阅读一个简单的循环语句,其中通过使用 split() 命令我在循环开始之前定义了 'a' 数组,在循环的每次迭代中定义了 'b' 数组。
有人可以帮我解释下面的陈述吗?因为我知道 splits 和 for 循环在做什么,所以我把它放在了透视图中。
split(,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]
x[b[1]]=b[2]
它不是在创建多维数组。
x 是一个数组。它将数组键 b[z] 的值赋给 b[z]。 z 是我刚刚在这里使用的正整数。
看起来像一维数组。假设您有一个文本文件,其中一行如下:
1|age 10:fname john:lname smith|12345
- 假设管道符号的分隔符
|
,您的 $2 将是 age 10:fname john:lname smith
。
- 用冒号
:
拆分将得到 3 个项目:age 10
、fname john
和 lname smith
for
循环遍历这 3 个项目。它取第一项age 10
- 被space分割了。 b[1] 现在是年龄,b[2] 现在是 10
- 数组 x['age'] 设置为 10
- 同理,x['lname']设置为smith,x['fname']设置为'john'
我是 awk 的新手。我正在阅读一个简单的循环语句,其中通过使用 split() 命令我在循环开始之前定义了 'a' 数组,在循环的每次迭代中定义了 'b' 数组。
有人可以帮我解释下面的陈述吗?因为我知道 splits 和 for 循环在做什么,所以我把它放在了透视图中。
split(,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]
x[b[1]]=b[2]
它不是在创建多维数组。
x 是一个数组。它将数组键 b[z] 的值赋给 b[z]。 z 是我刚刚在这里使用的正整数。
看起来像一维数组。假设您有一个文本文件,其中一行如下:
1|age 10:fname john:lname smith|12345
- 假设管道符号的分隔符
|
,您的 $2 将是age 10:fname john:lname smith
。 - 用冒号
:
拆分将得到 3 个项目:age 10
、fname john
和lname smith
for
循环遍历这 3 个项目。它取第一项age 10
- 被space分割了。 b[1] 现在是年龄,b[2] 现在是 10
- 数组 x['age'] 设置为 10
- 同理,x['lname']设置为smith,x['fname']设置为'john'