Linux三劍客之一 awk

2021-09-25 07:56:00 字數 2278 閱讀 2767

awk:是一種優良的文字處理工具,linux及unix環境中現有的功能最強大的資料處理引擎之一。這種程式設計及資料操作語言的最大功能取決於乙個人所擁有的知識。awk命名:alfred aho peter weinberger和brian kernighan三個人的姓的縮寫。 

最簡單地說, awk 是一種用於處理文字的程式語言工具。 

任何awk語句都是由模式和動作組成,乙個awk指令碼可以有多個語句。模式決定動作語句的觸發條件和觸發時間。

awk程式設計基礎及高階

學習內容:

字段(域)與記錄、模式匹配、基本的awk執行過程、awk常用內建變數(預定義變數)、awk陣列(工作常用)

awk 選項:-f 指定域分隔符

awk格式:

1、檢視awk版本:awk -version

工作中,常用gawk

2、awk指令:是由模式、動作,或者模式和動作的總和組成

格式:awk [options] 'pattern '

pattern模式:可以理解為:找誰

action動作:可以理解為:幹什麼

3、awk執行過程

awk是一行一行的處理檔案,這條命令中包含模式部分(條件)和動作部分,awk將處理模式指定的行

awk執行:

1、awk讀取第一行

2、判斷是否符合模式中的條件

如果匹配則執行對應的動作

如果不匹配,繼續讀取下一行

3、繼續讀取下一行

4、重複過程1-3,直至檔案結束

4、awk內須知內建變數

記錄:行 域:列

$ 取,取用內部資訊

$0 代表當前的一整行,一條記錄

$nf:代表最後乙個區域的值

$1--$n $數字:代表第n個域

fs:一行記錄的各域間的分隔符

ns:每行記錄切割符,域間的分隔符

nr:代表行數(記錄號),預設一行對應乙個記錄,讀取新行時會自動加1

nf:最後乙個域號,標識當前行有幾個域

rs:記錄的分隔符,簡單理解為可以指定每個記錄的結尾標識

5、正規表示式

^匹配以什麼開頭的行 記錄

如:『^bash』

$匹配以什麼結尾的記錄

如:『bash$』

+重複一次或一次以上

~(匹配) / !~(不匹配)

用於對記錄或字段的表示式進行匹配

如:$1~ 第乙個域匹配

*重複前乙個字元0次或多次

a*cool 匹配0或多個a

匹配內任何乙個字元

[abc]、[a-z]

.匹配任意乙個字元(包括回車)a.?

匹配前面的字元0次或一次

如:a?b 匹配ab或b

如:awk 『$nf~/^bash』 /etc/passwd 最後乙個域匹配以bash開頭的行

a、/正規表示式開始/,/正規表示式結束/

如:awk '/root/,/mysql/' file2 顯示file2檔案中root第一次出現到mysql第一次出現的行

b、$1~/正規表示式開始/,$3~/正則結束/

\:匹配前面字元至少m次

\:匹配正好m次

\:匹配最少m次,最多n次

6、begin模組:在讀取檔案前就做的操作,一般用於初始化條件的設定

end模組:讀取完所有的檔案時才做的最後工作

{}:內部寫讀取檔案時進行的操作,用來遍歷整個檔案,類似於awk的迭代器

awk格式:awk 'beginend'

awk 'begin /pattern/ end' filename

awk使用;分隔多個命令

7、awk案列

(1)file2中,以:為分隔符,區域3大於15的行的數目?

awk -f ":" '$3>15end' file2

注:a=a+1 === a++ === a+=1

(2)用awk輸出1+2+.....+100的值

awk 'begin'

8、awk陣列:陣列名[處理字串]=「值」 (arrayname[string]=value)

awk陣列下標:可以是數字、字母、字串

輸出陣列:for(key(變數) in array) key是元素名

print key,array[key]

(1)awk統計每個ip的訪問量

array[192,168.224.10]++

linux 三劍客之 awk

awk是一種程式語言,用於在linux unix下對文字和資料進行處理。資料可以來自標準輸入 stdin 乙個或多個檔案,或其它命令的輸出。它支援使用者自定義函式和動態正規表示式等先進功能,是linux unix下的乙個強大程式設計工具。它在命令列中使用,但更多是作為指令碼來使用。awk有很多內建的...

linux三劍客(重點awk)

grep sed awk被稱為linux中的 三劍客 三者各有特長,具體見下 grep 更適合單純的查詢或匹配文字 sed 更適合編輯匹配到的文字 awk 更適合格式化文字,對文字進行較複雜的格式處理 awk命令格式 awk v fs v ofs begin end test fs處可為輸入 出欄位...

linux三劍客之awk

linux三劍客 grep sed awk 與sed類似,awk是行處理器 相比較螢幕處理的優點,在處理龐大檔案時不會出現記憶體溢位或是處理緩慢的問題,它可以對每一行進行切片處理 awk處理過程 依次對每一行進行處理,然後輸出 awk命令形式 awk f f v begin end file f f...