awkコマンド内の変数をbash変数に置き換えたいと思います。
例えば:
var="one two three"
echo $var | awk "{print $2}"
$2
をvar
変数に置き換えたい。私は役に立たない awk -v
ようなものと同様に試みました。awk "{ print ${$wordnum} }
見た目が異なるアプローチ:
$ echo $var
one two three
$ field=3
$ echo $var | awk -v f="$field" '{print $f}'
three
$ field=2
$ echo $var | awk -v f="$field" '{print $f}'
two
あなたはほとんどそれを持っています...
$ myfield='$3'
$ echo $var | awk "{print $myfield}"
three
最初の行のハードクォートは$3
、シェルによる解釈を妨げます。2行目のソフトクォートにより、変数を置き換えることができます。
awkステートメントの一部を変数と連結できます。たぶん、これはあなたがあなたのスクリプトファイルに望むものです:
echo $1|awk '{print($'$2');}'
ここでは、ローカル変数$ 2のパーツ{print($
と値);}
が連結され、awkに渡されます。
編集:いくつかのアドバイスの後、むしろこれを使用しないでください。たぶん、1回限りの解決策として。すぐにそれを行うことに慣れることをお勧めします-最初のコメントのリンクを参照してください。