1 awk簡介
1.1什么是awk nawk gawk
awk是一種用于處理數(shù)據(jù)和生成報告的UNIX編程語言。nawk是awk的新版本,gawk是基于linux的GNU版本。
1.2 awk介紹
awk是3個姓氏的首字母,代表創(chuàng)建該語言的3位作者:Alfred V.Aho、Brian W.Kernighan、Peter J.Weinberger。當(dāng)然也可以叫它wak或kaw,但常用的是awk。
最初編寫于1977年,1985年得以改進(jìn)以支持更大的程序,還增加了可用戶自定義函數(shù)、動態(tài)正則表達(dá)式、同時處理多個輸入文件等功能。
1.3 awk版本
awk的版本有很多,包括old awk、new awk、GNU awk(gawk)、POSIX awk等
2 awk格式
基本語法:awk [options] ‘PRogram’ filename …
awk [options] ‘pattern {action}’ filename
選項(xiàng) 模式 操作
options
-F (field separator)
有三種方法:
1、使用空白符分隔字段(默認(rèn)值);這種情況下,記錄的前導(dǎo)空白字符和結(jié)尾空白字符(空格和/或制表符)將被忽略。都視為一個空白字符。
2、使用其他單個字符來分隔字段。例如:awk -F “:”或awk ‘BEGIN{FS=“:”}’
3、使用不止一個字符作為字段分隔符,它將被作為一個正則表達(dá)式來解釋。例如: FS=“[‘ :/t]"
-v vars=value (自定義變量)
3 awk原理
工作遍歷模式:迭代,循環(huán)
1、切片(注意:默認(rèn)將空格符和制表符都視為空格,而且多個連續(xù)的空格都視為一個(自動刪除重復(fù)的空格)
2、賦予變量 (將fs分隔后的字段都存入變量,整行存入$0)
3、遍歷(循環(huán)每一個字段,以字段為單位,非每行)
4、逐行(讀取一行,將pattern和action都執(zhí)行完成,讀取下一行)
4 awk輸出
4.1一般輸出print
4.2格式化輸出printf
4.3輸出到文件
4.4輸出到管道
4.5關(guān)閉文件和管道
5 awk輸入
5.1 awk程序的輸入
5.2輸入分隔
5.3多行記錄
5.4 getline函數(shù)
5.5命令行參數(shù)
6 awk變量
6.1內(nèi)置變量
6.2自定義變量
7 awk模式
7.1 empty模式
7.2 BEGIN and END模式
7.3正則表達(dá)式
7.4表達(dá)式
7.5復(fù)合模式
7.6范圍模式
8 awk操作
8.1空語句
8.2表達(dá)式
8.3輸入
8.4輸出
8.5流控制語句
9 awk控制
9.1條件語句
9.2循環(huán)
9.3程序控制
10 awk數(shù)組
10.1關(guān)聯(lián)數(shù)組
10.2二維和多維數(shù)組
10.3數(shù)組應(yīng)用
11 awk 函數(shù)
11.1內(nèi)置函數(shù)
11.2自定義函數(shù)
12 其他
13 附錄
13.1正則表達(dá)式
13.2表達(dá)式運(yùn)算符
新聞熱點(diǎn)
疑難解答
圖片精選