このスクリプトを考えると
#!/bin/awk -f
{
print $1
}
それはそのように呼び出すことができます
foo.awk foo.txt
ただし、スクリプトで常にfoo.txt
. そこで、このように入力ファイルなしで呼び出せるようにスクリプトを修正したいと思います。
foo.awk
このスクリプトを考えると
#!/bin/awk -f
{
print $1
}
それはそのように呼び出すことができます
foo.awk foo.txt
ただし、スクリプトで常にfoo.txt
. そこで、このように入力ファイルなしで呼び出せるようにスクリプトを修正したいと思います。
foo.awk
#!/bin/awk -f
BEGIN {ARGV[ARGC++] = "foo.txt"}
{print $1}
これはfoo.txt
、あたかもコマンド ラインに配置したかのように、引数リストの末尾に追加されます。BEGIN
これには、スクリプトを拡張して、すべてをブロックに入れる必要なく、印刷以外のことを実行できるという追加のボーナスがあります。
これにはシェルラッパーを使用します。
#!/bin/bash
foo.awk foo.txt
わかりました、多分このトリックをしますか?(浮気?)
#!/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
。上記のスクリプトが必要なものです。