跳转至内容

AWK

来自 ArchWiki
(重定向自 Awk)


AWK 是一种为文本处理而设计的小型编程语言。它的名字来源于其作者的姓氏:Alfred Aho、Peter Weinberger 和 Brian Kernighan。该语言在类 Unix 系统上 是标准化的且广泛可用

安装

在 Arch Linux 上,awk(1p) 命令由 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
  • nawkThe AWK Programming Language 中描述的“新”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 变量赋值在运行时不保留

尽管未被文档化,但 似乎许多实现会在处理命令行上指定的 -v 选项的变量赋值后,在内部重置 ARGC 变量。因此,要在运行时获得 ARGC 变量的期望值(例如,在 BEGIN 代码块中),需要在代码块中直接设置该变量。

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

参见