awk命令就是把文件逐行的讀入,以空格為默認分隔符將每行切片,切開的部分再進行各種分析處理。例如:
awk -F '/' '{print $NF}' tmp/file.txt
該命令用於讀取file.txt文件中的內容,讀取到的每行內容按'/'分隔符分割后並打印最后一個詞,如讀取到lib/xxx.txt內容將會打印出xxx.txt
awk命令語法:
awk [-F|-f|-v] 'BEGIN{} //{command1; command2} END{}' file
[-F|-f|-v] 大參數,-F指定分隔符,-f調用腳本,-v定義變量 var=value
' ' 引用代碼塊
BEGIN 初始化代碼塊,在對每一行進行處理之前,初始化代碼,主要是引用全局變量,設置FS分隔符
// 匹配代碼塊,可以是字符串或正則表達式
{} 命令代碼塊,包含一條或多條命令
; 多條命令使用分號分隔
END 結尾代碼塊,在對每一行進行處理之后再執行的代碼塊,主要是進行最終計算或輸出結尾摘要信息
1、print命令是awk打印指定內容的主要命令:
示例:讀取tmp目錄下的file.txt
awk '{print}' tmp/file.txt
2、F指定分隔符讀取
awk -F '/' '{print $1}' tmp/file.txt
按分隔符分割后打印第一個詞
awk -F '/' '{print $NF}' tmp/file.txt
按分隔符分割后打印最后一個詞
awk -F '/' '{print $(NF-1)}' tmp/file.txt
按分隔符分割后打印倒數第二個詞
附注:
- $0 表示整個當前行
- $1 每行第一個字段
- NF 字段數量變量
- NR 每行的記錄號,多文件記錄遞增
- FNR 與NR類似,不過多文件記錄不遞增,每個文件都從1開始
- \t 制表符
- \n 換行符
- FS BEGIN時定義分隔符
- RS 輸入的記錄分隔符, 默認為換行符(即文本是按一行一行輸入)
- ~ 匹配,與==相比不是精確比較
- !~ 不匹配,不精確比較
- == 等於,必須全部相等,精確比較
- != 不等於,精確比較
- && 邏輯與
- || 邏輯或
- + 匹配時表示1個或1個以上
- /[0-9][0-9]+/ 兩個或兩個以上數字
- /[0-9][0-9]*/ 一個或一個以上數字
- FILENAME 文件名
- OFS 輸出字段分隔符, 默認也是空格,可以改為制表符等
- ORS 輸出的記錄分隔符,默認為換行符,即處理結果也是一行一行輸出到屏幕
- -F'[:#/]' 定義三個分隔符