我在awk脚本中使用变量时遇到了麻烦。
myvariable = tolower(substr($1,0,2)) tolower(substr($2,0,8))
所以我可以在脚本中使用$ myvariable,而不是每次使用上面的。{/ p>
我试过了,但是它打印的所有内容都没有从字符串中删除。
感谢。
答案 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
,...)NR
,NF
,FS
,RS
,...)my_var = 123
,i = "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