如何在awk脚本中使用变量

时间:2015-11-18 04:35:24

标签: awk

我在awk脚本中使用变量时遇到了麻烦。

myvariable = tolower(substr($1,0,2)) tolower(substr($2,0,8))

所以我可以在脚本中使用$ myvariable,而不是每次使用上面的。{/ p>

我试过了,但是它打印的所有内容都没有从字符串中删除。

感谢。

2 个答案:

答案 0 :(得分:2)

awk与linux shell脚本不同..你不需要在变量名前面使用"$"。在awk中,"$"以其自己的方式是特殊的,例如它用于引用字段/行/记录。

如果你声明你的变量声明它就像这样

myvariable = tolower(substr($1,0,2)) tolower(substr($2,0,8))

也就是说,将你的 awk 变量放在你的awk语句

之前。

如果你的linux shell中有一个变量声明,你想在你的awk脚本中使用该变量

您可以将shell变量分配给awk,如

awk -v awkvariable="$myshellvariable" '{...commands....}'

答案 1 :(得分:0)

AWK有三种“类型”的变量:

  • 一个用于访问字段($1$2$3,...)
  • 一堆系统变量(NRNFFSRS,...)
  • 用户定义的变量(my_var = 123i = "hello",...)

要打印下部,只需编写变量名称:

my_var = "john doe";
print my_var;
print NF; // Print Number of Fields

例如

echo john was here | awk '{print NF}' # 3

有趣的是,您可以将系统/用户定义的变量与字段变量($1,...)混合使用,如下所示:

my_var = 2;
print $my_var; # print second field
print $NF; # Print last field (Using the "Number of Fields" variable)

例如

echo john was here | awk '{print $NF}' # here
echo john was here | awk '{print $(NF-1)}' # was