假设我想将一个字符串传递给
awk
,以便在按模式(pattern)拆分后,子字符串成为关联数组的索引(而不是值)。
就像这样:
$ awk -v s="A:B:F:G" 'BEGIN{ # easy, but can these steps be combined?
split(s,temp,":") # temp[1]="A",temp[2]="B"...
for (e in temp) arr[temp[e]] #arr["A"], arr["B"]...
for (e in arr) print e
}'
A
B
F
G
有没有awkism或gawkism可以直接将字符串s
分割成其组件,并使这些组件成为arr
中的索引项?
原因是(更大的图像)我想要这样的东西(伪awk):
awk -v s="1,4,55" 'BEGIN{[arr to arr["1"],arr["5"],arr["55"]} $3 in arr {action}'
split(str,tmp); for (i in tmp) arr[tmp[i]]
可能是正确的做法。谢谢! - dawgawk -v s="A:B:C:G" 's ~ "(^|:)" $3 "(:|$)"{action}'
。 - NeronLeVelu$3 in arr
),我发布的代码也是使用index()
进行的,因此正则表达式元字符只会被视为字面值。 - Ed Morton