1.概念
awk:報告生成器,格式化文本輸出。awk其名稱得自於它的創始人Alfred Aho、Peter Weinberger和Brian Kernighan姓氏的首個字母,awk默認以換行符爲標記識別下一行。awk其實是一門編程語言,它支持條件判斷、數組、循環等功能。所以,我們也可以把awk理解成一個腳本語言解釋器。
2.用法
awk [options] 'Pattern{Action}' file1 file2 ...
1)Pattern
awk默認是逐行處理文本內容,”模式“其實就是追加條件,只有滿足條件的的行纔會被處理,常見的模式有以下幾種:
-
BEGIN/END模式,前者表示處理文本之前的行爲 ,後者表示處理完文本後的行爲
-
關係運算符模式,使用關係運算符來添加限定條件控制awk的輸出,常見關係運算符有 < <= == > >= ~ !~
-
空模式,即不加限定條件
-
正則模式,即使用正則表達式來匹配,限定awk輸出
-
行範圍模式,例如awk '/正則1/,/正則2/{動作}' file這種語法,指定匹配正則1和正則2之間的行來執行動作
2)Action
因爲需要輸出格式化後的文本,所以awk最常用的動作就是print和printf
3)options
-
F:指定輸入分隔符
-
-v:設置變量的值
3.內置變量
-
FS:輸入分隔符,默認爲空白字符
-
OFS:輸出分隔符,默認爲空白字符
-
RS:輸入記錄分隔符,區別下一行內容的標記,默認爲換行符
-
ORS:輸出記錄分隔符,設定每行內容之間的標記,默認爲換行符(使用print輸出)
-
NF:number of field,當前行的字段個數(即當前行被分割成了幾列)
-
NR:bumber of row,行號
-
FNR:file number of row,讀取多個文件時區分設定的行號
-
FILENAME:當前文件名字
-
ARGC:命令行參數的個數
-
ARGV:數組,保存的是命令行給定的各個參數