您好,登錄后才能下訂單哦!
1.統(tǒng)計以下文本內(nèi)容中每個數(shù)字出現(xiàn)的次數(shù)
[liuwei@test tmp]$ cat 1.log 1 2 2 3 3 4 100 1 100 100 100 [liuwei@test tmp]$ awk '{for(i=1;i<=NF;i++)s[$i]++}END{for(key in s)print key,s[key]}' 1.log 4 1 100 4 1 2 2 2 3 2
2.統(tǒng)計上面文本中100出現(xiàn)的次數(shù)
#方法1 [liuwei@test tmp]$ awk '{for(i=1;i<=NF;i++)if($i==100)sum++}END{print sum}' 1.log 4 #方法2 [liuwei@test tmp]$ awk '{for(i=1;i<=NF;i++)s[$i]++}END{for(key in s)if(key==100)print key,s[key]}' 1.log 100 4 #方法3,不用awk進(jìn)行統(tǒng)計 [liuwei@test tmp]$ grep -o "100" 1.log | wc -l
3.統(tǒng)計下面語句中,每個單詞及字符出現(xiàn)的個數(shù)
the squid project provides a number of resources toassist users design,
implement and support squid installations. Please browsethe documentation
and support ections for more infomation
#統(tǒng)計字符出現(xiàn)次數(shù) [liuwei@test tmp]$ grep -o "\w" word.txt | awk '{s[$1]++}END{for(key in s)print key,s[key]}' #統(tǒng)計每個單詞出現(xiàn)次數(shù) #方法1,直接遍歷每行的每個字段進(jìn)行累計 [liuwei@test tmp]$ awk -F '[ ,.]+' '{for(i=1;i<=NF;i++)s[$i]++}END{for(key in s)print key,s[key]}' word.txt for 1 toassist 1 number 1 users 1 project 1 of 1 more 1 ections 1 documentation 1 resources 1 a 1 provides 1 Please 1 browsethe 1 installations 1 and 2 support 2 implement 1 the 1 infomation 1 squid 2 design 1 #方法2,利用輸入字段分隔符把每個單詞變?yōu)閱为毜囊恍性傩羞M(jìn)統(tǒng)計 [liuwei@test tmp]$ awk -v RS='[ ,.]+' '{s[$1]++}END{for(key in s)print key,s[key]}' word.txt
4.打印出haproxy.log(nginx,tomcat等都可以用)中指定時間段內(nèi)的日志,以便于進(jìn)行分析
[liuwei@test tmp]$ awk '{if($3>="20:00:00" && $3<="20:15:59")print $0}' haproxy.log 也可以寫為: [liuwei@test tmp]$ awk '$3>="20:00:00"&&$3<="20:15:59"{print $0}' haproxy.log
5.AWK筆試題-->獲取本機(jī)的IP地址和掩碼
#方法一,利用腳本的配置文件(source)進(jìn)行獲取,source的作用是將某個文件變成此腳本的配置文件 source /etc/sysconfig/network-scripts/ifcfg-eth0 printf "IP地址:%s\t子網(wǎng)掩碼:%s\n" $IPADDR $NETMASK #方法二:利用awk地址定界 file=/etc/sysconfig/network-scripts/ifcfg-eth0 awk -F= '/IPADDR/,/NETMASK/{print $2}' $file #方法三:利用awk的或條件 awk -F= '$1=="IPADDR"||$1=="NETMASK"{print $1,$2}' $file 知識點1:source的作用 知識點2:awk匹配連續(xù)多個字段的寫法;/IPADDR/,/NETMASK/表示匹配IPADDR與NETMASK之間的所有內(nèi)容
6.統(tǒng)計當(dāng)前服務(wù)器每個外部IP的連接個數(shù)
#方法1,原理-->先以空格為分隔符得到第5個字段,再以冒號為分隔符得到IP字段 [liuwei@test tmp]$ netstat -tan | awk '/^tcp\>/{print $5}' | awk -F: '{s[$1]++}END{for(key in s)print key,s[key]}' #方法2,利用split函數(shù)-->需要知道split函數(shù)每個參數(shù)是什么意思,此方法看起來很高端啊 netstat -tan | awk '/^tcp\>/{split($5,ip,":");s[ip[1]]++}END{for(key in s)print key,s[key]}' 知識點:awk中split函數(shù)的用法,在此例中表示以冒號為分隔符將$5的內(nèi)容進(jìn)行分隔,存儲到ip數(shù)組中
7.要求文件a里的數(shù)據(jù)依次替換文件b中的xxx字樣。
[liuwei@test tmp]$ cat a
aaa
bbb
ccc
ddd
[liuwei@test tmp]$ cat b
111 xxx
222 xxx
333 xxx
444 xxx
#方法1,利用getline函數(shù)進(jìn)行實現(xiàn) [liuwei@test tmp]$ awk '{getline i<"a";print $1,i}' b 111 aaa 222 bbb 333 ccc 444 ddd #方法2,同時利用geline,sub函數(shù)進(jìn)行實現(xiàn) [liuwei@test tmp]$ awk '{getline i<"a";sub("xxx",i,$2)}1' b 111 aaa 222 bbb 333 ccc 444 ddd 知識點1:getline函數(shù)用于從文本中按行讀取內(nèi)容,并且可以將內(nèi)容賦值給變量 知識點2:awk中sub函數(shù)的用法,在此例中表示查找$2中的第一次出現(xiàn)的xxx,并且用變量i的值進(jìn)行替換 知識點3:awk中g(shù)ub函數(shù)的用法,跟sub函數(shù)用法一樣,不過sub只替換第一次找到的,gub表示替換全部的
8.統(tǒng)計第2列的和;統(tǒng)計第1列中出現(xiàn)的內(nèi)容,并統(tǒng)計出對應(yīng)的第2列的和
[root@instance-d4u5ahgn tmp]# cat sumb.txt
1 76
2 78
1 75
2 99
4 100
3 12
#統(tǒng)計第2列的和 [root@instance-d4u5ahgn tmp]# awk '$1==1{sum+=$2}END{print sum}' sumb.txt 151 #統(tǒng)計第1列中出現(xiàn)的內(nèi)容,并統(tǒng)計出對應(yīng)的第2列的和 [root@instance-d4u5ahgn tmp]# awk '{s[$1]+=$2}END{for(key in s)print key,s[key]}' sumb.txt 4 100 1 151 2 177 3 12
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。