您好,登錄后才能下訂單哦!
Awk的使用
1 awk的基礎(chǔ)知識
awk是文本與數(shù)據(jù)的處理工具
awk的特點是可以編程,并且處理靈活,功能更強大
awk的應(yīng)用:統(tǒng)計和制表等等
2 awk的處理方式和格式
awk一次處理一行內(nèi)容
awk對每行可以切片處理
3 awk的格式有
命令行格式
腳本格式
4 命令行格式有
基本格式
擴展格式
5 基本格式
awk
參數(shù)
命令
操作的文件
6 命令由兩部分組成
正則表達式或邏輯判斷式
awk操作命令
7 awk操作命令語句
內(nèi)置函數(shù)
控制指令
8 awk的內(nèi)置參數(shù)
內(nèi)置參數(shù)的使用格式(awk -F ’:指定的分割符’ ’{print 內(nèi)置參數(shù)}’ 文件名)awk的內(nèi)置變量1: $0表示整個當(dāng)前行 $1每行第一個字段 $2每行第二個字段,awk內(nèi)置參數(shù)的分割符 參數(shù):-F ’指定的分割符’ 如果沒有寫將默認為空格,如果想要多個字段加逗號
9 awk的內(nèi)置變量2
NR每行的行號 NF字段數(shù)量的總數(shù)或每行的列數(shù) FILENAME正在處理的文件名
案例一: 顯示文件中的每行的行號,每行的列數(shù)和對應(yīng)行的用戶名
第一種 用print awk -F ’:’ ’{print ”Line行號: ”NR, ”Col列數(shù):”NF”,”User用戶名: ”$1}’ 文件名
第二種 用printf awk -F ’:’ ’{printf (”Line:%s Col:%s User:%s\n”,NR,
NF,$1)}’ 文件名 (s前面加上字符數(shù),顯示的時候格式會更整齊)
案例二: 顯示文件中用戶ID大于100的行號和用戶名
awk -F ’:’ ’{if條件判斷 ($3>100) pint ”Line:”NR, ”User: ”$1}’ 文件名
案例三: 在服務(wù)器log中找出Error的發(fā)生日期
第一種: sed ’/Error/p’ fresh.log | awk ’{print $1}’用sed找出有Error的行
第二種: awk ’/Error/{print $1}’ fresh.log 用awk定位Error
10 邏輯判斷式
~,!~匹配正則表達式 匹配 不匹配
awk -F ’:’ ’要打印的東西如$1邏輯判斷式如~/匹配的條件如^m.*/{print $1}’ 文件名 打印出文件中所有以m開頭的第一個字段
= =,!=,< ,>判斷邏輯表達式 等于 不等于 小于 大于
awk -F ’:’ ’輸出的條件如$3>100 {print $!,$3}’ 文件名
打印出文件中所有小于100的第一個字段和第三個字段
11 擴展格式
在基本格式之前加入BEGIN,在基本格式之后加入END
案例一: 制表顯示/etc/passwd每行的行號,每行的列數(shù),對應(yīng)行的用戶名
awk -F ’:’ 開頭部分’BEIND{print “LINE行號 COL列數(shù) USER用戶名}’
循環(huán)部分要打印的字段{print NR每行的行號,NE每行的列數(shù),$1每行的第一個字段}結(jié)尾部分END{print”------”FITENAME”------”}’ 文件名
12 awk的邏輯處理案例
案例一: 統(tǒng)計當(dāng)前文件夾下的文件和文件夾占用的大小
ls -l | awk ’BEGIN (size=0)}{size+=$5}END{print “ size is ” size/1024/1024”M” }’
案例二: 統(tǒng)計顯示/etc/passwd/的賬戶總?cè)藬?shù)
awk -F ’:’ ‘BEGIN{count=0}$1!~/^$/{count++}END{print “count= ”count}’ 文件名
統(tǒng)計顯示UID大于100的用戶名
Awk -F ‘:’ ‘BEGIN{count=0}{if ($3 > 100) name[count++]=$1}END{for
(i=0;i<count;i++) print i,name[i]}’ passwd
案例三: 統(tǒng)計netstat-anp狀態(tài)下為LISTEN和CONNECTED的連接數(shù)量
Netstat -anp | awk ‘$6~/CONNECTED|LISTEN/{sum[$6]++}END{for (i in sum)print i,sum[i]}’
13 sed和awk的區(qū)別
sed側(cè)重于正則處理
sed和awk可以共同使用
awk和sed都可以處理文本
awk側(cè)重于復(fù)雜的邏輯處理
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。