AWK - Arch Linux 中文维基

跳至內容

# AWK

出自 Arch Linux 中文维基
翻譯狀態：

- 本文（或部分內容）譯自 AWK，最近一次同步於 2025-03-05，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

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 專門記錄了這個問題。

## 參見

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

分類：​

- 程式語言
- 命令

AWK
新增話題