跳转到内容
来自 Arch Linux 中文维基

AWK 是一种用于文本处理的小型编程语言。其名称源于作者的姓氏:Alfred Aho、Peter Weinberger 和 Brian Kernighan。该语言已经标准化,在类 Unix 系统上广泛使用

安装

在 Arch 上,awk(1p) 命令由 gawk 提供。gawk默认安装,支持本地 Unicode,并具有大量额外功能

注意:gawk旨在通过动态加载所谓的扩展,在运行时获得额外的语言功能——捆绑在软件发行版中的扩展是开箱即用的,但单独维护的 gawkextlibAUR-* 插件则需要手动安装。

替代方案

与许多其他核心工具一样,有几种或多或少符合要求的实现可供使用:

  • BusyBox — BusyBox 实现的性能不是很好,但占用空间较小,适合内存紧张的环境。
https://git.busybox.net/busybox/tree/editors/awk.c || busybox
  • GoAWK — 用 Go 语言实现的 AWK
https://github.com/benhoyt/goawk || goawkAUR
  • nawk AWK 编程语言中描述的"新" AWK,又名 BWK AWK 或 One-True-AWK,现由 Arnold Robbins 和 B. W. Kernighan 共同维护,支持 UTF-8 和 csv。
https://awk.dev/ || nawk
  • mawk — 性能相当出色的 AWK 实现。
https://invisible-island.net/mawk/ || mawkAUR

疑难解答

通过 -v 选项为 ARGC 变量赋值不会在运行时保留

尽管没有文档说明,[1]但许多实现在处理完命令行指定的 -v 选项的变量赋值后,似乎会在内部重置 ARGC 变量。因此,要在运行时(例如 BEGIN 代码块)获得 ARGC 变量的预期值,需要直接在代码块中设置该变量:

BEGIN {
  ARGC=1;
  ...
}
注意:即将更新的 POSIX 专门记录了这个问题

参见

gawk(1) 的综合教程和典型参考文献