awkで変数を拡張する

awkで変数を拡張する

約1000個のファイルがあり、各ファイルの最初のフィールドが特定の数字と一致する場合は、対応する3番目の要素を印刷する必要があります。下の数字7は定数ではなく前のスクリプトの出力に基づいているため、変数を渡そうとすると失敗します。

$cat ${i} | head -14 | awk '$1 == "7" {print $3}'
$Supervisor
$blah=7
$cat ${i} | head -14 | awk '$1 == "${blah}" {print $8}'

比較では、変数をエスケープ/拡張するために別の組み合わせを試してみましたが、それらのどれも変数を拡張できないようですblah

答え1

最良のオプションは、おそらくawk変数として渡すことです。-v

head -14 "$i" | awk -v blah="$blah" '$1 == blah {print $8}'

headまたはその部分なし:

awk -v blah="$blah" 'NR > 14 {exit} $1 == blah {print $8}' "$i"

関連情報