文本處理3劍客 awk

1、文件ip_list.txt如下格式,請提取” .magedu.com” 前面的主機名部分並寫入到回到該文件中
1 blog.magedu.com
2 www.magedu.com

999 study.magedu.com

image


2、統計/etc/fstab文件中每個文件系統類型出現的次數

image


3、統計/etc/fstab文件中每個單詞出現的次數

image


4、提取出字符串Yd$C@M05MB%9&Bdh7dq+YVixp3vpw中的所有數字

image



5、 有一文件記錄了1-100000之間隨機的整數共5000個,存儲的格式100,50,35,89…請取出其中最大和最小的整數

for i in {1..5000};do echo -n $((($RANDOM+90000)%100000)),>>random.txt;done

image


6、解決DOS***生產案例:根據web日誌或者或者網絡連接數,監控當某個IP併發連接數或者短時內PV達到100,

即調用防火牆命令封掉對應的IP,監控頻率每隔5分鐘。防火牆命令爲:iptables -A INPUT -s IP -j REJECT

image

image



7、將以下文件內容中FQDN取出並根據其進行計數從高到低排序
http://mail.magedu.com/index.html
http://www.magedu.com/test.html
http://study.magedu.com/index.html
http://blog.magedu.com/index.html
http://www.magedu.com/images/logo.jpg
http://blog.magedu.com/20080102.html

image


image



8、 將以下文本以inode爲標記,對inode相同的counts進行累加,並且統計出
同一inode中,beginnumber的最小值和endnumber的最大值
inode|beginnumber|endnumber|counts|
106|3363120000|3363129999|10000|
106|3368560000|3368579999|20000|
310|3337000000|3337000100|101|
310|3342950000|3342959999|10000|
310|3362120960|3362120961|2|
311|3313460102|3313469999|9898|
311|3313470000|3313499999|30000|
311|3362120962|3362120963|2|
輸出的結果格式爲:
310|3337000000|3362120961|10103|
311|3313460102|3362120963|39900|
106|3363120000|3368579999|30000|



awk -F'|' -v OFS='|' '/^[0-9]/{inode[$1]++; if(!bn[$1]){bn[$1]=$2}\

else if(bn[$1]>$2){bn[$1]=$2};  \

if(en[$1]<$3)en[$1]=$3;cnt[$1]+=$(NF-1)} \

END{for(i in inode)print i,bn[i],en[i],cnt[i]}' inode.txt

image

上面是找網上的大神答案 ,實在燒腦, 下面是我自己寫的,以後再看吧


awk -v FS="|" -v OFS= "|" '/^[[:digit:]]/ {min[$1]=999999;max[$1]=0; if (min[$1]>count[$2]){min[$1]=count[$2]};\
if (max[$1]<count[$3]){max[$1]=count[$3]};counts[$4}+ =count[$4]} \
END{for (i in count) {print count[$i],min[$i],max[$i],count[$i] }}' inode.txt

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章