假设我想传递一个字符串,awk以便一旦我将其分割(在模式上),子字符串就成为关联数组的索引(而不是值).
像这样:
$ 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
Run Code Online (Sandbox Code Playgroud)
是否有一个awkism或gawkism,允许字符串s直接拆分为其组件,这些组件成为索引条目arr?
原因是(更大的图片)我想要这样的东西(伪awk):
awk -v s="1,4,55" 'BEGIN{[arr to arr["1"],arr["5"],arr["55"]} $3 in arr {action}'
Run Code Online (Sandbox Code Playgroud)
不,没有比以下更好的方法将分隔的子字符串映射到数组索引:
split(str,tmp); for (i in tmp) arr[tmp[i]]
Run Code Online (Sandbox Code Playgroud)
FWIW,如果您不喜欢这种方法来执行最终伪代码的操作:
awk -v s="1,4,55" 'BEGIN{split(s,tmp,/,/); for (i in tmp) arr[tmp[i]]} $3 in arr{action}'
Run Code Online (Sandbox Code Playgroud)
那么获得相同行为的另一种方法是
awk -v s=",1,4,55," 'index(s,","$3","){action}'
Run Code Online (Sandbox Code Playgroud)