AWK 是一种用于文本处理的小型编程语言。其名称源于作者的姓氏:Alfred Aho、Peter Weinberger 和 Brian Kernighan。该语言已经标准化,在类 Unix 系统上广泛使用。
安装
在 Arch 上,awk(1p) 命令由 gawk包 提供。gawk包 是默认安装,支持本地 Unicode,并具有大量额外功能。
替代方案
与许多其他核心工具一样,有几种或多或少符合要求的实现可供使用:
- BusyBox — BusyBox 实现的性能不是很好,但占用空间较小,适合内存紧张的环境。
- GoAWK — 用 Go 语言实现的 AWK
- nawk — AWK 编程语言中描述的"新" AWK,又名 BWK AWK 或 One-True-AWK,现由 Arnold Robbins 和 B. W. Kernighan 共同维护,支持 UTF-8 和 csv。
- https://awk.dev/ || nawk包
- mawk — 性能相当出色的 AWK 实现。
疑难解答
通过 -v
选项为 ARGC
变量赋值不会在运行时保留
尽管没有文档说明,[1]但许多实现在处理完命令行指定的 -v
选项的变量赋值后,似乎会在内部重置 ARGC
变量。因此,要在运行时(例如 BEGIN
代码块)获得 ARGC
变量的预期值,需要直接在代码块中设置该变量:
BEGIN { ARGC=1; ... }
注意:即将更新的 POSIX 专门记录了这个问题。
参见
- nawk(1): nawk包的参考卡式手册页面
- Gawk: Effective AWK ProgrammingGNU 文档
:gawk(1) 的综合教程和典型参考文献
- Alpine Linux's community wiki article on AWK: 有一些关于 BusyBox 和其他 AWK 实现差异的说明
- AWK tech notes:语言的缺陷以及与其他现代编程语言相比在设计上的差异
- Idiomatic AWK:AWK 程序可以多么简洁