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 程序可以多麼簡潔