Linux的shell編程前奏常見命令實戰四

                                                                                                     Linux的shell編程前奏常見命令實戰四   

一>處理以下文件內容,將域名取出並根據域名進行計數和排序處理

oldboy.log

http://www.etiantian.org/index.html

http://www.etiantian.org/1.html

http://post.etiantian.org/index.html

http://mp3.etiantian.org/index.html

http://www.etiantian.org/3.html

http://post.etiantian.org/2.html

答案:

法一:運用awk,sort,uniq
[root@lll /]# cat oldboy.log                                      -------查看並分析文件內容的數據特點
http://www.etiantian.org/index.html
http://www.etiantian.org/1.html
http://post.etiantian.org/index.html
http://mp3.etiantian.org/index.html
http://www.etiantian.org/3.html
http://post.etiantian.org/2.html
[root@lll /]# awk -F "/" '{print $3}' oldboy.log     --------運用awk的-F參數分割取出域名
www.etiantian.org
www.etiantian.org
post.etiantian.org
mp3.etiantian.org
www.etiantian.org
post.etiantian.org
[root@lll /]# awk -F "/" '{print $3}' oldboy.log|sort     -------運用sort命令排序將域名相同的放在一起
mp3.etiantian.org
post.etiantian.org
post.etiantian.org
www.etiantian.org
www.etiantian.org
www.etiantian.org
[root@lll /]# awk -F "/" '{print $3}' oldboy.log|sort|uniq    -----運用uniq去重命令去掉重複的
mp3.etiantian.org
post.etiantian.org
www.etiantian.org
[root@lll /]# awk -F "/" '{print $3}' oldboy.log|sort|uniq -c  -----運用uniq -c對重複域名計數
      1 mp3.etiantian.org
      2 post.etiantian.org
      3 www.etiantian.org

法二: 運用awk數組

[root@lll /]# awk -F "/" '{hotel[$3]++}END{for (domain in hotel)print domain,hotel[domain]}' oldboy.log|sort -rn
www.etiantian.org 3
post.etiantian.org 2
mp3.etiantian.org 1

法三:統計服務器當前單IP連接數最大的IP地址前十,統計網絡狀態

[root@lll /]# netstat -an|grep EST|awk '{print $5}'|cut -d : -f 1|grep -v "^$"|awk '{++ETT[$1]} END {for (oldboy in ETT) print "ip:"oldboy "-----",ETT[oldboy] ''}'|sort -rn -k2|head -10
ip:192.168.0.101----- 1



總結:

1>sz -y命令可以用於linux中putty,securecrt等工具向windows本地傳輸文件;rz -y可以用於windows本地向linux中傳輸。

2>awk數組總結:

命令拆分                         功能說明

/^tcp/    過濾出以tcp開頭的行,“^”爲正則表達式用法,以...開頭,這裏是過濾出以tcp開頭的行。

S[]           定義了一個名叫S的數組,在awk中,數組下標通常從 1 開始,而不是 0。

NF          當前記錄裏域個數,默認以空格分隔,如上所示的記錄,NF域個數等於6

$NF        表示一行的最後一個域的值,如上所示的記錄,$NF也就是$6,表示第6個字段的值,也就是SYN_RECV或TIME_WAIT等。

S[$NF]    表示數組元素的值,如上所示的記錄,就是S[TIME_WAIT]狀態的連接數

++S[$NF]  表示把某個數加一,如上所示的記錄,就是把S[TIME_WAIT]狀態的連接數加一

END

for(key in S) 遍歷S[]數組

print key,”\t”,S[key]  打印數組的鍵和值,中間用\t製表符分割,顯示好一些。

3>sort排序,相當於asc;sort -rn,相當於desc

   uniq去重, 相當於distincted.








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