将字段(位置变量)的值分配到gawk / awk中的用户定义变量中

时间:2011-10-27 19:13:13

标签: awk gawk

我正在创建一个名为“size”的变量,并尝试从gawk位置变量为其赋值。但是,这似乎不起作用。在下面的示例中,我试图将字段4的值存储到变量“size”中。当我打印可变大小时,将打印整行而不是字段4。

如何将字段值保存到变量中供以后使用?

prompt>  echo "Live in a big city" | gawk '/Live/ {size=$4; print $size}'

输出以下内容: 住在一个大城市

我想看到这个:

1 个答案:

答案 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,因此得到完整的行。

相关问题