32

空白で列に区切られたデータを含むテキスト ファイルがあるとします。ファイル名と数値 N を入力として取り、その列のみを出力するシェルスクリプトを書きたいと思います。awk を使用すると、次のことができます。

awk < /tmp/in '{print $2}' > /tmp/out

このコードは、2 番目の列を出力します。

しかし、任意の列をargvで渡すことができるように、シェルスクリプトでそれをラップするにはどうすればよいでしょうか?

4

2 に答える 2

43
awk -vx=2 '{print $x}'

またはシェルスクリプトで:

#!/ビン/sh
数=$1
awk < /tmp/in -vx=$num '{print $x}' > /tmp/out
于 2008-11-26T06:30:34.290 に答える
7
awk '{print $'$myvar'}' < /tmp/in > /tmp/out

$myvar は変数列 (整数) です。スクリプト インジェクションに注意してください。

于 2008-11-26T06:31:55.347 に答える