空白で区切られたデータが列になっているテキストファイルがあるとします。入力としてファイル名と数値Nを受け取り、その列のみを出力するシェルスクリプトを作成します。 awkを使用すると、次のことができます。
awk < /tmp/in '{print $2}' > /tmp/out
このコードは、2番目の列を出力します。
しかし、任意の列をargvで渡すことができるように、シェルスクリプトでどのようにラップするのでしょうか。
awk -v x = 2 '{print $ x}'
またはシェルスクリプトで:
#!/ bin/sh num = $ 1 awk </ tmp/in -vx = $ num '{print $ x}'> /tmp/out
awk '{print $'$myvar'}' < /tmp/in > /tmp/out
$ myvarは変数列(整数)です。スクリプトインジェクションに注意してください!