AWK

出自 ArchWiki
(重定向自 Awk)

本条目或章节可能需要与 核心工具 合并。

注: #故障排除 并非 Arch 特有,其他内容可以在 核心工具 页面中涵盖。(在 Talk:AWK 中讨论)

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 变量在运行时不会保留

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

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

参见