-1

このスクリプトを考えると

#!/bin/awk -f
{
  print $1
}

それはそのように呼び出すことができます

foo.awk foo.txt

ただし、スクリプトで常にfoo.txt. そこで、このように入力ファイルなしで呼び出せるようにスクリプトを修正したいと思います。

foo.awk
4

3 に答える 3

4
#!/bin/awk -f
BEGIN {ARGV[ARGC++] = "foo.txt"}
{print $1}

これはfoo.txt、あたかもコマンド ラインに配置したかのように、引数リストの末尾に追加されます。BEGINこれには、スクリプトを拡張して、すべてをブロックに入れる必要なく、印刷以外のことを実行できるという追加のボーナスがあります。

于 2013-05-23T23:41:12.547 に答える
0

これにはシェルラッパーを使用します。

#!/bin/bash
foo.awk foo.txt
于 2013-05-23T22:27:31.437 に答える
0

わかりました、多分このトリックをしますか?(浮気?)

#!/bin/sh
awk '{print $1}' foo.txt

次のように名前を付けることができますfoo.awk

その後

chmod +x foo.awk

./foo.awk同じディレクトリの下で試してください。

編集

#!/bin/awk -f
BEGIN{while(getline < "/path/to/foo.txt")print $1 }

奇妙な要件。なぜbashラッパーがあなたの要件に合わないのですか? とにかく、質問にタグを付けましたshell 。上記のスクリプトが必要なものです。

于 2013-05-23T22:27:28.967 に答える