awk:语法错误

awk:语法错误

下面是代码:

for i in "${x[@]}"
do
        z+=$(awk '$1 == '$i' {print $2}' $file)
done
echo "${z[@]}"

它给出了以下错误和期望的输出:

awk: cmd. line:1: $1 ==  {print $2}
awk: cmd. line:1:        ^ syntax error

我猜测当$1值与值不匹配时$i,它会显示此错误。

有人可以告诉我如何处理这个问题吗?

我尝试过-v

z+=$(awk -v '$1 == '$i' {print $2}' $file)

但这是致命的:

awk: fatal: `$1 ' is not a legal variable name

答案1

将 $i 作为变量传递给 awk ,因此:

z+=$(awk -v vari="$i" '$1 == vari {print $2}' "$file")

相关内容