跳至內容
出自 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 專門記錄了這個問題

參見