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` 檔案中的所有數字相加,並在開始和結束時輸出訊息。(假設每行只包含一個數字)