想要一个实现了“@include”的AWK

在gawk手册中,我介绍了一个@include操作符。 这使您可以制作.awk模块并共享脚本等。包含文件。

到目前为止,我发现Windows的最新cgywin,mingw和gnu awk-s(awk,gawk,mawk,nawk,…)失败了: @include语句。

有人能指出我的版本,实现Windows的整个nawk或awk实施? 我很确定,当天有至less一个nawk,我们已经下载了运行Windows NT。

另外一个解决办法将有助于在此期间。 (说一个预先testing过的awk includer程序??)

提亚 ,威尔

据我所知, @include文件直到4.x才由gawk本地支持。 但是,至少在Linux上,它带有一个名为igawk的shell脚本,您可以使用它。 它预处理awk脚本,并用包含文件的内容(通过$AWKPATH找到)替换@include s。 也许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语法不兼容。 gawk 4中的原生@include需要包含文件名的引号字符串; igawk将采取裸露的方式,如果引用它,将尝试找到名称中带有引号的文件。

如果你想坚持使用标准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

检查unixtools – 它看起来像它会排序你。 祝你好运…

你可以尝试runawk

RunAWK是AWK解释器的一个小包装器,可以帮助编写AWK中的独立程序。 它提供对模块和其他强大功能的支持。 它提供了几十个模块,提供了处理命令行选项的有效方法,用于操作字符串和数组的强大函数以及排序,数学,tmpfile,braceexpand函数以及其他许多功能。

http://sourceforge.net/projects/runawk

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