【问题标题】:Want an AWK that implements '@include'想要一个实现 '@include' 的 AWK
【发布时间】:2015-08-26 05:02:48
【问题描述】:

在 gawk 手册中,我描述了一个 @include 运算符。这使您可以制作 .awk 模块和共享脚本等。包含文件。

到目前为止,我为 Windows 发现的最新 cgywin、mingw 和 gnu awk-s(awk、gawk、mawk、nawk,...)在第一个 @include 语句上失败。

谁能给我指出一个为 Windows 实现整个 nawk 或 awk 实现的版本?我敢肯定,在过去,我们至少下载了一个 nawk 来运行 Windows NT。

在此期间,另一种解决方法会有所帮助。 (比如说一个预先测试过的 awk 包含程序??)

tia, 会

【问题讨论】:

  • 到目前为止,“答案”没有运气。满足我的迫切需要;我制作了一个简单的 .cmd 脚本来连接我想要在 DOS shell 中的所有文件:FOR x IN (...) 循环。这比写出问题花费的时间要少得多。

标签: windows awk


【解决方案1】:

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

【讨论】:

  • 嗯,我想我需要寻找 gwak v4。
【解决方案2】:

你可以试试runawk

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

http://sourceforge.net/projects/runawk

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

【讨论】:

    【解决方案3】:

    如果您想坚持使用标准 awk,请执行以下操作。

    创建您的库 awk 文件,我们将其命名为 myawklib.awk。在库文件中,有您的 awk 程序语句。不要包括 BEGIN 和 END 块。不要包含 BODY 块,除非您知道自己在做什么。只有库函数。

    可以在命令行运行:

    awk -f myawklib.awk -f main.awk 程序参数

    awk -f myawklib.awk -f another_main.awk 程序参数

    希望这会有所帮助。

    • 医学博士

    【讨论】:

    • 不确定。我有一个类似的脚本文件,它从较小的库创建了一个大文件。 awk 有一个 -I 命令。那对我来说更好。然而,主要意图就像 C 的#include,一种包含文本的方法;不仅仅是“类库”。
    【解决方案4】:

    检查unixtools - 看起来它会为您排序。祝你好运...

    【讨论】:

      猜你喜欢
      • 2012-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多