2013-04-20 18 views
5

gawkマニュアルでは、@オペレータを記述しています。これにより、.awkモジュールを作成してスクリプトなどを共有できます。ファイルをインクルードします。'@include'を実装するAWKが必要です

これまでのところ、私はWindows用の見つけた最新cgywin、mingwのとGNU AWK-S(AWK、gawkは、のmawk、nawkのは、...)最初に失敗:@include声明。

誰かがWindows用のnawkまたはawkの実装全体を実装しているバージョンを指してくれますか?私は、Windows NTを実行するためにダウンロードした、少なくとも1人のノックがその日に戻っていたと確信しています。

代わりに回避策が役立ちます。 (セイ事前テストのawk includerプログラム??)

TIA、 ウィル

+1

これまでの '答え' には何の運。私の即時の必要性のために。単純な.cmdスクリプトを作成して、DOSシェルで必要なすべてのファイルを連結します。FOR x IN(...)ループ。それは質問を書くよりはるかに時間がかかりました。 – will

答えて

5

私の知る限り、@includeファイルが4.xのまでのgawkでネイティブにサポートされていません。しかし、少なくともLinuxでは、代わりに使うことができるigawkというシェルスクリプトが付属しています。 awkスクリプトを前処理し、@includeを含まれているファイルの内容に置き換えます($AWKPATH経由)。おそらく、Cygwinにもこのスクリプトがありますか?

$ cat foo.awk 
@include bar.awk 
$ cat bar.awk 
BEGIN {print "Hello, world!" } 
$ awk -f foo.awk 
awk: foo.awk:1: @include bar.awk 
awk: foo.awk:1:^invalid char '@' in expression 
$ gawk -f foo.awk 
gawk: foo.awk:1: @include bar.awk 
gawk: foo.awk:1:^invalid char '@' in expression 
$ igawk -f foo.awk 
Hello, world! 

ただし、igawkとは4の@include構文は互換性がありませんgawkは。 gawk 4のネイティブ@includeには、インクルードされたファイル名の引用符付きの文字列が必要です。 igawkの場合は裸の単語をとり、名前を引用すると引用符で囲まれたファイルを見つけようとします。

+0

うーん、私はgwak v4を探す必要があると思う。 – will

0

チェックunixtools - それはあなたのように読み込まれます。幸運...

0

runawkを試すことができます。

RunAWKはAWKインタープリタ用の小さなラッパーで、AWKのスタンドアロンプ​​ログラムの作成に役立ちます。モジュールやその他の強力な機能をサポートしています。コマンドラインオプション、文字列や配列の操作、ソート、数学、tmpfile、braceexpand関数など多くの機能を処理するための強力な関数を提供する数十のモジュールが付属しています。

http://sourceforge.net/projects/runawk

http://awk.info/?tools/runawk

1

あなたは、標準のawkに固執したい場合は、次の操作を行います。

ライブラリのawkファイルを作成し、それをmyawklib.awkとしましょう。ライブラリファイルには、awkプログラムのステートメントがあります。 BEGINブロックとENDブロックを含めないでください。あなたが何をしているのか分からない限り、BODYブロックを含めないでください。ライブラリ関数のみが必要です。

コマンドラインで実行することができます。

のawk -f myawklib.awk -f main.awk program_arguments

のawk -f myawklib.awk -f another_main。awkプログラムの引数

これは役に立ちます。

  • MD
+0

わかりません。小さなライブラリから大きなファイルを作成したスクリプトファイルでも同様のことがありました。 awkには-Iコマンドがあります。それは私には良いことでした。しかし主な目的は、C言語の#includeのようなものです。単に「図書館のような」ものではありません。 – will

関連する問題