据我所知,@includegawk 在 4.x 之前不支持文件。但是,至少在 Linux 上,它附带了一个名为的 shell 脚本igawk,您可以使用它来代替;它预处理 awk 脚本并将@includes 替换为包含文件的内容(通过 找到$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 中的 native@include需要一个带引号的字符串作为包含的文件名;igawk's 是一个裸词,如果你引用它,它会尝试查找名称中带有引号的文件。