概述
awk 讀取輸入(預設:行)作為記錄,然後使用字段分隔符 (FS) 將其分開,接著應用模式/動作 { ... } 以產生所需的輸出 (OFS)。常見的應用包括提取列、條件過濾、計算總和/平均值以及格式轉換等。
主要內建變數
這些是控制輸入/輸出操作和格式的代表性內建變數。
- NR: 目前已讀取的記錄(行)號
- FNR: 當前檔案中的記錄號
- NF: 當前記錄的字段數量
- FS: 輸入字段分隔符(預設為空格)
- OFS: 輸出字段分隔符(預設為空格)
- RS: 記錄分隔符(預設為換行符)
- ORS: 輸出記錄分隔符(預設為換行符)
基本形式
awk '模式 { 動作 }' input.txt
awk -f program.awk input.txt
通過單行傳遞模式/動作區塊,或使用 -f 傳遞腳本文件。
主要選項
根據實際應用場景整理了常用選項,包含 gawk 相容選項。
1) 基本執行/輸入
2) 字段/變數傳遞
3) 調試/兼容性(gawk)
4) 幫助/版本
生成的命令:
請試著組合命令。
這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。
`awk` 執行命令。
請將上述選項組合在一起,與 AI 一同虛擬執行命令。
常用模式
列提取
awk -F ':' '{ print $1, $3 }' /etc/passwd
只輸出由冒號分隔的第 1、第 3 個字段
條件過濾
awk '$5 > 100 { print }' data.tsv
只輸出第 5 個字段值大於 100 的記錄
聚合範例
awk '{ sum += $2 } END { print sum }' data.txt
第二列的總和
變數傳遞與格式
awk -v OFS=',' '$1=="KEY" { print $1, $2, $3 }' input.txt
將 OFS 指定為逗號並只輸出特定鍵
實用技巧
由於是逐行流處理,與管道的組合非常強大。
- 字段分隔符可以使用正則表達式:-F '[,:\t]+'
- 可以通過多個 -e 將程序分部分編寫
- 將長腳本用 -f 分開並用 git 進行版本控制
- 適當調整 OFS/ORS 以控制輸出格式
- 對於大容量輸入,只保留最少必要的操作並簡化管道