我想获取一个名为 ids 的数组,其中包含作为变量传递的字符串中的所有值:
426
425
422
415
405
397
349
310
254
167
0
我发现这段代码应该可以工作:
awk -v branches="426;425;422;415;405;397;349;310;254;167;0" 'BEGIN { split( branches, ids, ";" ); for (id in ids){print id}}'
但是它给了我:
1
2
3
4
5
6
7
8
9
10
11
如果我从 BEGIN 块中取出它,它只是停在那里并且什么也不输出......
如果您希望值成为数组的键,则需要再执行一个步骤。
$ awk -v branches="426;425;422;415;405;397;349;310;254;167;0" '
BEGIN {n=split(branches,idV,";");
for(i=1;i<=n;i++) ids[idV[i]];
for(id in ids) print id}'
0
167
254
310
349
397
405
415
422
425
426
请注意,这些值不会采用相同的广告顺序。 这可以称为哈希集,而不是数组。
这是 perl 版本:
echo "426;425;422;415;405;397;349;310;254;167;0" | perl -ne ' chomp;print(join("n",sort(split(/;/))))'
0
167
254
310
349
397
405
415
422
425
chomp - 删除换行符。