awk學習記錄

2021-07-08 18:27:21 字數 1059 閱讀 1490

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...