awk程式設計能力強大,文字處理能力突出。
首先,來看使用awk的乙個例子:
比如,列出最常用的五個歷史命令:
結合其他命令,我們給出結果:
awk 『』 ~/.bash_history | sort | uniq -c | sort -rn | head -n 5
從這個例子可以看出,awk確實神奇,好用。是得好好學習一番了。awk要學習以下要點:
首先準備乙個材料,xinxi.txt
(1)print命令
print列印指定部分
例如:awk '『 xinxi.txt
#列印xinxi.txt
print命令也可以用來列印匹配的某一行,比如:awk 『/dmy/ 』 xinxi.txt 等同於awk 『/dmy/』 xinxi.txt
print更強大的是可以列印需要的某幾列,比如要列印name和score,就應該這樣:
(2)分隔符
預設分隔符是空格,如果需要改變,就要用-f指定,比如要列印/etc/passwd的所有使用者,awk -f":" 『』 /etc/passwd ,比較特殊的是,awk以雙引號為分隔符時候,這樣寫:
(3)nf引數表示每行有幾個字段
比如,awk 『』 xinxi.txt ,可以檢視xinxi.txt每行有7個字段
使用 awk -f: 『nf==5 』 xinxi.txt 顯示只有5個字段的行
沒有列印結果,這是因為xinxi.txt欄位都是7
(4)nr引數表示行號,比如,要列印xinxi.txt所有行,每行前面加行號,就應該這樣寫:
再舉個例子,要同時列印xinxi.txt的第3行和第4行,就要這樣寫:
awk 『nr3||nr4 』 xinxi.txt
(5)取某個列中的最大值
比如,要取xinxi.txt中height的最大值,可以這樣寫:
awk 『begin } end 』 xinxi.txt
(6)求某一列的總和和平均值
求總和,比如第六列score的總和,可以這樣寫:awk 『 end 』 xinxi.txt
要求平均值,只需要總和初以行數,sum/(nr-1)就可以
(8)awk在運維工作中的使用例子
a.檢視機器的ip列表
ifconfig -a | awk 『/bcast/ 』|awk -f: 『』
(b)統計所有狀態碼為 404 的請求
awk 『($9~/404/) 』 access.log | sort | uniq
感悟:awk知識點太多,太強大,今天先學習到這裡,後面繼續!
awk學習筆記
單詞計數 cat filename awk end 排序演算法 bin bash function f while n 1 do f 1 shift done wait 顯示特殊符 var i am a student echo var awk 結果為 am a i student echo var...
awk學習筆記
1 將第一列重複的元素去掉,只保留第乙個 root centos awk test cat sed u.txt haha 1 nihao 1 haha 3 hehe 4 heihei 5 heihei 6 1 haha 1 heihei root centos awk test awk f a 1 ...
AWK學習筆記
1.awk是三個 人名的縮寫,他們是 aho peter weinberg和 brain kernighan。awk是一種樣式掃瞄與處理工具。但其功能卻大大強於sed和grep。awk支援對記錄和字段的處理,其中對字段的處理是grep和sed不能實現 的,這也是awk優於二者的原因之一。2.與其它u...