我发现AWK的所有功能都包含在GAWK中,除了使用没有安装GAWK的系统外,我是否应该使用AWK与GAWK? AWK的性能是否优于GAWK?
答案 0 :(得分:6)
awk
可以引用很多东西。那里有awk
-the-standard,还有很多不同的实现,其中一个是gawk
。
不使用特定于实现的功能意味着您很有可能在awk
- 语言的其他实现上保持代码不变。
gawk
,作为awk
语言的一种实现,声称符合awk
- 标准,同时添加了一些额外的功能。
$ man awk
…
DESCRIPTION
Gawk is the GNU Project's implementation of the AWK programming
language. It conforms to the definition of the language in the
POSIX 1003.1 Standard. This version in turn is based on the
description in The AWK Programming Language, by Aho, Kernighan,
and Weinberger. Gawk provides the additional features found in
the current version of Brian Kernighan's awk and a number of
GNU-specific extensions.
…
至于速度,使用gawk
作为"普通" awk
应该没有区别 - 通常,在安装gawk
时,awk
只是gawk
的符号链接,这意味着它们将是完全相同的程序。
但是,使用gawk
特定功能意味着您将被锁定在该特定实施中 - 因此,如果(假设)您发现更快的实施,那么您就可以可能必须调整你的脚本而不是只是交换二进制文件。 (可能有更快的实现,但我不知道任何,因为我从来没有必要让我的awk
脚本运行得更快。)
就个人而言,我倾向于坚持"普通" awk
并且不使用gawk
- 具体功能,但如果您不关心切换到其他实现,使用gawk
扩展可能会使您的脚本更容易编写并保存您那个时候到了。
答案 1 :(得分:2)
现在最常见的AWK实现是gawk,可能第二个最常见的是mawk,至少因为它是debian上的系统AWK。
引用TextView
Mawk比gawk更小,更快。它有一些编译时间 限制如NF = 32767和sprintf buffer = 1020。
在gawk方面,有更多深思熟虑的扩展,我认为,更好地管理错误和更好的错误消息,当你调试复杂的脚本时,这是一个真正的奖励,可能是使用gawk的一个很好的理由,即使你对它的扩展不感兴趣。
另一方面,如果您有一个已调试的脚本,如果您不需要特定的扩展名,那么如果您可以使用内置的mawk限制(那很多ifs)并且您想要在不离开AWK舒适的情况下挤出最后一点性能,那么mawk就是你要走的路。
答案 2 :(得分:0)
假设“AWK”是指任何不是gawk的awk - 不会。如果可能的话,总是使用gawk。如果它不在您的系统上,请安装它。