2

awkコマンド内の変数をbash変数に置き換えたいと思います。

例えば:

var="one two three"    
echo $var | awk "{print $2}"

$2var変数に置き換えたい。私は役に立たない awk -vようなものと同様に試みました。awk "{ print ${$wordnum} }

4

3 に答える 3

5

見た目が異なるアプローチ:

$ 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
于 2013-02-14T20:24:32.193 に答える
2

あなたはほとんどそれを持っています...

$ myfield='$3'
$ echo $var | awk "{print $myfield}"
three

最初の行のハードクォートは$3、シェルによる解釈を妨げます。2行目のソフトクォートにより、変数を置き換えることができます。

于 2013-02-14T20:14:59.617 に答える
0

awkステートメントの一部を変数と連結できます。たぶん、これはあなたがあなたのスクリプトファイルに望むものです:

echo $1|awk '{print($'$2');}'

ここでは、ローカル変数$ 2のパーツ{print($と値);}が連結され、awkに渡されます。

編集:いくつかのアドバイスの後、むしろこれを使用しないでください。たぶん、1回限りの解決策として。すぐにそれを行うことに慣れることをお勧めします-最初のコメントのリンクを参照してください。

于 2013-02-14T20:56:29.530 に答える