我正在创建一个名为“size”的变量,并尝试从gawk位置变量为其赋值。但是,这似乎不起作用。在下面的示例中,我试图将字段4的值存储到变量“size”中。当我打印可变大小时,将打印整行而不是字段4。
如何将字段值保存到变量中供以后使用?
prompt> echo "Live in a big city" | gawk '/Live/ {size=$4; print $size}'
输出以下内容: 住在一个大城市
我想看到这个:
大
答案 0 :(得分:2)
忽略美元符号。 awk就像C,不像shell或perl,你不需要任何额外的标点来取消引用变量。您只能使用美元符号来获取当前行的第n个字段的值。
echo "Live in a big city" | gawk '/Live/ {size=$4; print size}'
您打印整行的原因是:awk变量size
被赋值为big
。然后,在print语句中,awk取消引用size
变量并尝试print $big
。字符串“big”被解释为一个整数,因为它不以任何数字开头,所以它被视为数字0.所以你得到print $0
,因此得到完整的行。