[英]How to initialize a 2D array in awk
我正在使用2D数组保存某些模式的重复次数。 例如:
$4 == "Water" {s[$5]["w"]++}
$4 == "Fire" {s[$5]["f"]++}
$4 == "Air" {s[$5]["a"]++}
其中$5
可以是attack1
, attack2
或attack3
。 在END{ }
,我将打印出这些值。 但是,其中某些模式不存在。 因此,对于s["attack1"]["Air"] =0
,我的代码显示空白。 因此,我想知道是否有一种方法可以在BEGIN{ }
一行内初始化数组,而不是初始化我需要的每个元素 。
awk -f script.awk data
这是我用来运行脚本的命令。 我不允许使用任何其他标志。
编辑1:
这是当前的输出
Water Air Fire
attack1 554 12
attack2 14 24
attack3 6 3
这是我想要的输出:
Water Air Fire
attack1 554 0 12
attack2 14 24 0
attack3 6 0 3
在这种情况下,您不需要初始化数组。 Awk已经有一个默认的空值,因此您只需要更改打印值的方式即可。
注意:
awk 'BEGIN {print "Blank:", a[1];
print "Zero: ", a[1] + 0;
printf("Blank: %s\n", a[1]);
printf("Zero: %i\n", a[1])}'
输出:
Blank:
Zero: 0
Blank:
Zero: 0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.