AWK
(重定向自 Awk)
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 支持。
- mawk — 一种性能相当高的 AWK 实现。
故障排除
通过 -v
选项赋值给 ARGC
变量在运行时不会保留
虽然没有文档记录,但似乎许多实现在处理命令行上指定的 -v 选项的变量赋值后,会在内部重置 ARGC
变量。因此,要在运行时(例如 BEGIN
代码块)获得 ARGC
变量的期望值,需要直接在代码块中设置该变量
BEGIN { ARGC=1; ... }
注意: 即将到来的 POSIX 更新已经专门记录了这个问题。
参见
- nawk(1): nawk 的参考卡风格手册页
- GNU AWK 手册:既是关于 gawk(1) 的综合教程,又是权威参考文本
- Alpine Linux 社区 Wiki 上关于 AWK 的文章:有一些关于 BusyBox 和其他 AWK 之间实现差异的说明
- AWK 技术笔记:与其他现代编程语言相比,语言陷阱和设计差异
- 地道的 AWK:AWK 程序可以有多简洁