ask 是一種文本處理工具 ,一個強大的文本分析工具
格式:
awk '/pattern/{command}' file1 file2 ... #行匹配語句awk' '只能用單引號
-F 指定分隔符
-f 調用腳本
-v 定義變量
' ' 引用代碼塊
BEGIN 在對每一行進行處理之前,初始化代碼
// 匹配代碼塊,可以是字符串或正則表達式
; 多條命令使用分號分隔
END 對每一行進行處理之後再執行的代碼塊,主要是進行最終計算或輸出 結尾摘要信息
{ } 包含一條或多條命令
特殊符號:
$0 匹配整行
$1 每行的第一個字段
FS 輸入域分隔符,默認爲一個空格
RS 輸入記錄分隔符
NF 當前記錄裏域個數
NR 到目前爲止記錄數
OFS 輸出域分隔符
ORS 輸出記錄分隔符
\t 製表符
\n 換行符
== 等於全部相等
!= 不等於
例 awk '{print $0}' file 顯示整行
awk '{print $1,$3}' file 顯示匹配行的第一、三個域
awk '{print FNR,$0}' file file2 把兩個文件合起來顯示
統計/etc/fstab文件中每個文件系統類型出現的次數
awk '/^UUID/{fs[$3]++}END{for(i in fs){print i,fs[i]}}' /etc/fstab
統計/etc/fstab文件中每個單詞出現的次數
awk '{i=1;while(i<=NF){word[$i]++;i++}}END{for(num in word){print num,word[num]}}' /etc/fstab
統計出/etc/passwd文件中shell的種類和個數
awk -F: '{shell[$NF]++}END{for (i in shell){print i ,
shell[i]}}' /etc/passwd