我有一个脚本,其中的脚本片段是:
x=3
awk '$2=$x{print $1}' infile
Run Code Online (Sandbox Code Playgroud)
外部变量是x,
但它会引发错误 awk
那么在这种情况下,如何使awk运行成功?
sam*_*hen 23
您通过使用一个外部变量awk与-v选项:
some_variable=3
awk -v x=$some_variable '$2 == x {print $1}' infile
Run Code Online (Sandbox Code Playgroud)
另请注意,您需要将代码更改$2=$x为$2 == x
==改为使用=:后者是赋值$在awk脚本内部加上正常变量的前缀.旁白:您需要为-v要传入的每个变量指定一个,例如:
var1=2
var2=4
awk -v x=$var1 -v y=$var2 '$2 == x {print y " " $1}' infile
Run Code Online (Sandbox Code Playgroud)
awk-v为此目的有一个选项,或者@nevelis提到,只需使用双引号:
awk -v x=3 ' $2==x {print $1} '
Run Code Online (Sandbox Code Playgroud)
nev*_*lis -1
使用 "" - bash 不会替换单引号。
例如:
x=3 awk "\$2=$x{print \$1}" infile