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

精通 AWK 命令:文字處理的魔法師

AWK 是一種強大的腳本語言和命令列工具,用於在文字檔案中搜尋模式,並根據搜尋到的模式處理或重新格式化數據。它可用於各種文字處理任務,例如生成數據報告、數據提取和轉換。透過本指南,您將學習 AWK 的基本用法和進階功能。

AWK 概述

AWK 是由三位開發者 A. V. Aho、P. J. Weinberger 和 B. W. Kernighan 的姓名首字母縮寫而成,是 Unix 類系統中廣泛使用的資料操作語言。它從檔案或標準輸入中逐行讀取,並根據指定的模式和動作處理數據。

AWK 的運作方式

AWK 遵循以下基本結構:`pattern { action }`。每讀取一行,如果 `pattern` 匹配,則執行 `action`。如果沒有模式,則對所有行執行動作。如果沒有動作,則直接輸出匹配的行。

AWK 的特點

  • 逐行處理: 逐行(記錄)讀取並處理輸入檔案。
  • 欄位級別存取: 將每行按空白(預設分隔符)分隔成多個欄位($1、$2 等),並允許存取這些欄位。
  • 模式匹配: 只能對符合特定模式的行執行操作。
  • 程式設計功能: 提供變數、條件語句、迴圈、函數等基本程式設計功能。
  • 報告生成: 可以輕鬆生成複雜格式的文字報告。

主要 AWK 命令與選項

利用 AWK 的各種選項、內建變數和特殊模式,精確處理文字數據。

1. 基本用法及輸入/輸出選項

2. 內建變數

3. 特殊模式

生成的命令:

請試著組合命令。

這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。

`awk` 執行命令。

請將上述選項組合在一起,與 AI 一同虛擬執行命令。

使用範例

透過 AWK 命令的各種使用範例,體驗文字數據處理的魔力。

從檔案中只輸出第二個欄位

awk '{print $2}' data.txt

從 `data.txt` 檔案中提取並輸出每行的第二個欄位(列)。(預設分隔符:空白)

從 CSV 檔案中輸出特定欄位

awk -F',' '{print "姓名: " $1 ", 分數: " $3}' scores.csv

從逗號(`,`)分隔的 `scores.csv` 檔案中輸出姓名(第一個欄位)和分數(第三個欄位)。

只輸出包含特定模式的行

awk '/ERROR/{print}' log.txt

輸出 `log.txt` 檔案中所有包含 'ERROR' 字串的行。

與行號一起輸出

awk '{print NR ": " $0}' names.txt

在 `names.txt` 檔案的每行前面加上行號後輸出。

修改第一個欄位為 'apple' 的行的第二個欄位值

awk '$1 == "apple" {$2 = "fruit"; print}' inventory.txt

在檔案中找到第一個欄位為 'apple' 的行,將第二個欄位修改為 'fruit',然後輸出整行。

檔案處理前後訊息輸出及總和計算

awk 'BEGIN {total = 0; print "計算開始!"} {total += $1} END {print "總和: " total}' numbers.txt

將 `numbers.txt` 檔案中的所有數字相加,並在開始和結束時輸出訊息。(假設每行只包含一個數字)


相關命令

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


相同類別命令