Linux系統AWK程式語言指南
簡介
AWK是一種用於Linux文字處理的指令碼語言。它旨在操作文字檔案中的資料,是進行資料分析和管理任務的理想工具。AWK擁有眾多內建函式和運算子,可以執行簡單的搜尋和替換任務,或進行復雜的資料轉換。其簡潔的語法和多功能性使其易於操作文字檔案。對於在Linux環境中處理文字檔案的人來說,AWK是一個強大的工具。
讓我們提供一份Linux系統AWK程式語言的初學者指南。我們將介紹該語言的基本語法、使用AWK可以執行的不同型別的操作以及如何使用AWK處理文字檔案。我們還將為所介紹的每個操作提供程式碼示例和輸出。
在Linux作業系統中安裝AWK
一種安裝方法是利用Linux發行版提供的包管理器。安裝命令如下:
$ sudo apt-get install gawk
安裝後,我們可以檢查Linux中AWK的版本:
$ awk --version
如果AWK已安裝,該命令將顯示版本號。
AWK程式語言中的變數
AWK提供許多可在模式和操作中使用的內建變數。最常用的變數是:
NR - 表示當前記錄(行)號
NF - 表示輸入記錄中欄位的總數。
$0 - 整個當前記錄。
$1, $2, $3, … - 當前記錄中的第一、第二、第三……個欄位。
除了這些內建變數外,AWK還允許使用者定義變數。可以使用 = 運算子為使用者定義的變數賦值。
AWK命令列選項
AWK通常使用awk命令從命令列呼叫,該命令接受各種選項和引數。以下是常用選項的列表:
-F - 指定輸入檔案的欄位分隔符。
-v - 為變數設定值。
-f - 指定要執行的AWK指令碼檔案。
-n - 停用自動列印行。
-W - 啟用警告。
使用AWK從檔案中提取欄位
假設我們有一個名為“filename.csv”的CSV檔案,其格式如下:
name, age, gender Papan, 22, Male Priya, 27, Female
要提取年齡和性別欄位,可以使用以下命令:
$ awk -F, '{ print $2, $3 }' filename.csv
此AWK程式碼將列印名為“filename.csv”的CSV檔案的第二和第三個欄位(列),分隔符為逗號(',')。
解釋如下:
‘awk’ - 用於執行AWK指令碼的命令
‘-F,’ - 此選項將欄位分隔符設定為逗號。這告訴AWK將CSV檔案視為欄位之間以逗號作為分隔符。
“ ' { print $2, $3 }' ” - 這是AWK指令碼本身。它告訴AWK列印檔案中每一行的第二和第三個欄位,用空格分隔。
age gender 22 Male 27 Female
此命令將欄位分隔符設定為逗號 (-F,) 並列印檔案中每一行的第二和第三個欄位 ($2, $3)。
使用AWK命令過濾資料
我們有一個名為“data.txt”的檔案,其中包含學生的資訊,例如他們的姓名、年齡和成績。我們想只篩選出成績為“A”的學生。
示例
將以下內容放入“data.txt”檔案:
John, 18, A Sara, 19, B Mike, 20, A Lisa, 18, C Tom, 19, A
要篩選出成績為“A”的學生,可以使用以下AWK命令:
$ awk '$3=="A" {print}' data.txt
輸出
John, 18, A Mike, 20, A Tom, 19, A
我們可以看到,只有成績為“A”的行被打印出來。
示例
我們也可以在AWK命令中使用if語句來執行更復雜的篩選。例如,如果我們只想篩選出年齡大於18歲且成績為“A”的學生,可以使用以下AWK命令:
$ awk '$2>18 && $3=="A" {print}' data.txt
輸出
Mike, 20, A Tom, 19, A
我們可以看到,只有滿足這兩個條件的行才被打印出來。
使用AWK命令實現for迴圈
有三種迴圈:
while迴圈
do-while迴圈
for迴圈
這裡我們只實現“for迴圈”。
首先建立一個名為“input.txt”的檔案,並將以下內容放入其中:
Soumen,25 Bob,30 Papan,22 Aditya,40 Joy,35
現在,讓我們探討如何在AWK中使用迴圈來處理此檔案中的資料。
建立另一個名為“program.awk”的檔案
以下AWK程式使用for迴圈列印檔案的每一行:
{ for (i = 1; i <= NF; i++) { printf("%s ", $i); } printf("
"); }
在此程式中,模式為空,這意味著操作將應用於檔案的每一行。操作包含一個for迴圈,該迴圈使用NF(欄位數)變數迭代行的每個欄位(列)。在迴圈內,printf函式用於列印每個欄位後跟一個空格。迴圈結束後,printf函式再次用於列印換行符。
要執行此程式,可以使用以下命令:
$ awk -F, -f program.awk input.txt
其中“program.awk”是AWK程式的檔名,“-F,”指定欄位分隔符為逗號。
Soumen,25 Bob,30 Papan,22 Aditya,40 Joy,35
我們可以看到它列印了“input.txt”檔案中的所有行。
結論
本文介紹了Linux上的AWK程式語言,提供了實際的程式碼示例及其相應的輸出。AWK是用於處理文字資料和從中提取相關資訊的高效工具。本指南涵蓋了AWK的基本程式設計概念,包括迴圈。掌握這些知識後,我們將能夠在Linux上建立我們自己的AWK程式。