据我所知,@include
gawk 在 4.x 之前不支持文件。但是,至少在 Linux 上,它附带了一个名为的 shell 脚本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
语法不兼容。gawk 4 中的 native@include
需要一个带引号的字符串作为包含的文件名;igawk
's 是一个裸词,如果你引用它,它会尝试查找名称中带有引号的文件。