首頁 > 文字處理與搜尋 > awk

awk 快速指南

這是一個流處理工具,用於以記錄和字段為單位處理文本流,執行過濾、轉換和聚合。本指南整理了基於 GNU awk (gawk) 的常見選項和典型模式。

概述

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 以控制輸出格式
  • 對於大容量輸入,只保留最少必要的操作並簡化管道

相關命令

功能上相似或經常一起使用的命令。



相同類別命令