awk的學習筆記

2021-10-06 22:44:19 字數 1900 閱讀 7901

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...