在gawk手册中,我介绍了 @include 运算符。这使您可以制作.awk模块和共享脚本等。包括文件。
到目前为止,我发现最新的cgywin,mingw和gnu awk-s(awk,gawk,mawk,nawk,...)在第一个: @include 语句中失败了。
有人能指出我实现Windows的整个nawk或awk实现的版本吗?我很确定当天至少有一次nawk,我们已经下载了运行Windows NT。
在此期间,解决方案也会有所帮助。 (说一个预先测试过的awk includer程序??)
TIA , 将
答案 0 :(得分:7)
据我所知,gawk本身不支持@include
个文件,直到4.x.但是,至少在Linux上,它附带了一个名为igawk
的shell脚本,您可以使用它;它预处理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
语法不兼容。 gawk 4中的原生@include
需要包含文件名的带引号的字符串; igawk
带有一个单词,如果你引用它,会尝试在其名称中找到带引号的文件。
答案 1 :(得分: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程序参数
希望这可能会有所帮助。
答案 2 :(得分:0)
检查unixtools - 看起来它会对你进行排序。祝你好运......
答案 3 :(得分:0)
您可以尝试runawk
。
RunAWK是AWK解释器的一个小包装器,可帮助在AWK中编写独立程序。它为模块和其他强大功能提供支持。它附带了许多模块,这些模块提供了处理命令行选项的有效方法,用于操作字符串和数组的强大功能,以及排序,数学,tmpfile,大括号函数和许多其他函数。