6

gawk のマニュアルでは、@include演算子について説明しています。これにより、.awk モジュールを作成し、スクリプトなどを共有できます。インクルード ファイル。

これまでのところ、最新の cgywin、mingw、および gnu awk-s (awk、gawk、mawk、nawk、...) は、最初の@includeステートメントで失敗します。

Windows 用の nawk または awk 実装全体を実装するバージョンを教えてもらえますか? 昔、Windows NT を実行するためにダウンロードした nawk が少なくとも 1 つあったことは確かです。

当面の間、別の回避策が役立ちます。(テスト済みの awk インクルーダー プログラムとは??)

ティア、ウィル

4

4 に答える 4

8

私が知る限り、@includeファイルは 4.x まで gawk によってネイティブにサポートされていません。ただし、少なくとも Linux では、igawk代わりに使用できるシェル スクリプトが同梱されています。awk スクリプトを前処理@includeし、 s をインクルード ファイルの内容に置き換えます ( 経由で見つかります$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と gawk 4 の@include構文には互換性がないことに注意してください。@includegawk 4のネイティブでは、含まれるファイル名に引用符で囲まれた文字列が必要です。igawkは裸の単語を取り、名前に引用符がある場合は、そのファイルを見つけようとします。

于 2013-04-20T00:49:39.170 に答える
1

試すことができrunawkます。

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

http://sourceforge.net/projects/runawk

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

于 2013-04-20T16:11:07.993 に答える
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
于 2014-12-04T06:33:05.710 に答える
0

unixtoolsをチェックしてください。幸運を...

于 2013-04-20T00:54:47.237 に答える