awk是乙個高效的文字處理工具。awk通過檔案或流讀取資料,然後根據指定的分隔符對資料進行切片,然後通過規則對資料進行處理,最後輸出!我們在linux上經常使用的unix awk的gun版:gawk。
awk有三個基礎概念:
如下資料檔案data.txt所示:
姓名 上午 下午
陳二 數學 化學
張三 語文 數學
李四 數學 體育
王五 地理 語文
awk讀取如上資料後,根據記錄分割符rs(預設是換行符)把資料分為5條記錄,根據字段分割符fs(預設是空格)把記錄分成3個字段,並把每個字段賦予1,
2…,$0表示整條記錄。然後根據規則進行處理輸出。
awk的命令形式:
awk [options] 'script'
file....
awk [options] '/pattern/'
file...
1.如果我們想檢視每個人上午什麼課,就可以執行:
root@kali2
:~# awk '' data.txt
姓名 上午
陳二 數學
張三 語文
李四 數學
王五 地理
在這一條操作中我們只是使用即「」,其中1,
2列印的是第一,第二列檔案。
2.如果我們想檢視張三的一天上什麼課,就可以執行:
root@kali2
:~# awk '/^張三/' data.txt
張三 語文 數學
在這一條操作中我們使用了」//」及,」//」內使用的是正規表示式,/^張三/表示匹配以張三開頭的記錄,表示列印這條記錄。
3.如果我們想檢視上午是數學的課的學生的課表,就可以執行:
root@kali2
:~# awk '$2 ~ /數學/' data.txt
陳二李四
在這一條操作中我們使用了」~」表示式,表示第二列中匹配「數學」字串的記錄就列印出$1即第一列。 awk多行記錄
到目前為止,本教程用作例子的所有資料檔案中,每條記錄都自成一行。而在下面這個名為checkbook的示例資料檔案中,記錄之間用空行分隔,同一記錄的字段之間則用換行符分隔。要處理這個檔案,就必須將記錄分隔符 rs 設為空值,而把字段分隔符 fs 設為換行符。cat checkbook 1 1 04 1...
awk十三問 AWK學習之旅
awk學習之旅 十三個常用命令行處理 root monitor awkdir cat emp.txt beth 4.00 0 dan 3.75 0 kathy 4.00 10 mark 5.00 20 mary 5.50 22 susie 4.25 18 1.不列印最後一列 awk begin nf...
awk學習筆記
單詞計數 cat filename awk end 排序演算法 bin bash function f while n 1 do f 1 shift done wait 顯示特殊符 var i am a student echo var awk 結果為 am a i student echo var...