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")

おすすめ記事