10.1 grep,awk,sed三剑客及一大波命令及重要知识考试题讲解
1.处理以下文件内容,将域名取出并根据域名进行计数排序处理:(百度和sohu面试题)
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
对应企业实战1:分析网络连接里正在连接的所有IP的连接数,计数。
(网站某个IP访问量过大,有攻击嫌疑,将其断掉,减轻负载压力,壮士断腕!)。
对应企业实战2:分析http服务,日志IP的访问次数,计数(也可awstats工具)。
法一:
[root@ipt opt]# awk -F "/" '{print $3}' http.log
www.etiantian.org
www.etiantian.org
post.etiantian.org
mp3.etiantian.org
www.etiantian.org
post.etiantian.org
[root@ipt opt]# awk -F "/" '{print $3}' http.log |sort
mp3.etiantian.org
post.etiantian.org
post.etiantian.org
www.etiantian.org
www.etiantian.org
www.etiantian.org
[root@ipt opt]# awk -F "/" '{print $3}' http.log |sort|uniq
mp3.etiantian.org
post.etiantian.org
www.etiantian.org
[root@ipt opt]# awk -F "/" '{print $3}' http.log |sort|uniq -c
1 mp3.etiantian.org
2 post.etiantian.org
3 www.etiantian.org
[root@ipt opt]# awk -F "/" '{print $3}' http.log |sort|uniq -c|sort -rn
[root@ipt opt]# awk -F "/" '{print $3}' http.log |sort|uniq -c|sort -rn -k1
3 www.etiantian.org
2 post.etiantian.org
1 mp3.etiantian.org
法二:awk数组统计计数
[root@ipt opt]# awk -F "/" '{++S[$3]} END {for (key in S) print S[key],key}' http.log
1 mp3.etiantian.org
2 post.etiantian.org
3 www.etiantian.org
[root@ipt opt]# awk -F "/" '{++S[$3]} END {for (key in S) print S[key],key}' http.log |sort -rn
[root@ipt opt]# awk -F "/" '{++S[$3]} END {for (key in S) print S[key],key}' http.log |sort -rn -k1
3 www.etiantian.org
2 post.etiantian.org
1 mp3.etiantian.org
说明:
$3 表示第三个字段。
S[$3] 表示数组元素的值,这里即$3的连接数。
++S[$3] 表示$3的连接数加一。
for (key in S) 表示遍历S[$3]数组。
print S[key],key 表示输出打印值和键。即$3的连接数和相应字段。
2.统计网络连接状态案例
[root@backup opt]# cat netstat.log
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:43845 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:13016 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 64 10.0.0.41:22 10.0.0.253:12311 ESTABLISHED
tcp 0 0 :::28994 :::* LISTEN
tcp 0 0 :::873 :::* LISTEN
tcp 0 0 :::111 :::* LISTEN
tcp 0 0 :::22 :::* LISTEN
tcp 0 0 ::1:25 :::* LISTEN
tcp 0 0 :::19229 :::* LISTEN
[root@backup opt]# netstat -an >netstat.log
[root@backup opt]# awk '/^tcp/{++S[$6]} END{for (key in S) print S[key],key}' netstat.log
1 ESTABLISHED
12 LISTEN
[root@backup opt]# awk '/^tcp/{++S[$6]} END{for (key in S) print S[key],key}' netstat.log |sort -nr
12 LISTEN
1 ESTABLISHED
工作中:
[root@backup opt]# netstat -an|awk '/^tcp/{++S[$6]} END{for (key in S) print S[key],key}'|sort -nr
12 LISTEN
1 ESTABLISHED
3.统计netstat.log中外网的IP数
[root@backup opt]# netstat -an|awk '/^tcp/{++S[$5]} END{for (key in S) print S[key],key}'|sort -nr
6 0.0.0.0:*
6 :::*
1 10.0.0.253:12311 //注意不含端口号。
法一:
[root@backup opt]# netstat -an|awk -F "[: ]+" '/^tcp/{++S[$6]} END {for (key in S)print S[key],key}'
1 *
6 0.0.0.0
5 LISTEN
1 10.0.0.253
[root@backup opt]# netstat -an|awk -F "[: ]+" '/^tcp/{++S[$6]} END {for (key in S)print S[key],key}'|sort -rn
6 0.0.0.0
5 LISTEN
1 172.16.1.31
1 10.0.0.253
1 *
[root@backup opt]# netstat -an|awk -F "[: ]+" '/^tcp/{++S[$6]} END {for (key in S)print S[key],key}'|sort -rn|head -5
法二:
[root@backup opt]# netstat -an|awk -F "[: ]+" '/^tcp/{print $6}'
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
10.0.0.253
LISTEN
LISTEN
LISTEN
LISTEN
*
LISTEN
[root@backup opt]# netstat -an|awk -F "[: ]+" '/^tcp/{print $6}'|sort|uniq -c|sort -rn
6 0.0.0.0
5 LISTEN
1 10.0.0.253
1 *
[root@backup opt]# netstat -an|awk -F "[: ]+" '/^tcp/{print $6}'|sort|uniq -c|sort -rn -k1
[root@backup opt]# netstat -an|awk -F "[: ]+" '/^tcp/{print $6}'|sort|uniq -c|sort -rn -k1 |head -5
6 0.0.0.0
5 LISTEN
1 172.16.1.31
1 10.0.0.253
1 *
http://blog.51cto.com/oldboy/1184165
庖丁解牛获取连接状态数的awk数组命令
本系列博文完整内容共5篇:
第一篇:详解linux netstat输出的网络连接状态信息
http://oldboy.blog.51cto.com/2561410/1184139
第二篇:庖丁解牛获取连接状态数的awk数组命令
http://oldboy.blog.51cto.com/blog/2561410/1184165
第三篇:awk数组命令经典生产实战应用拓展
http://oldboy.blog.51cto.com/blog/2561410/1184177
第四篇:老男孩培训第八节课前awk考试题案例(门户面试题解答)
http://oldboy.blog.51cto.com/2561410/1184206
第五篇:linux生产服务器有关网络状态的优化措施(告一段落)
http://oldboy.blog.51cto.com/2561410/1184228
--------------------------------------
预习:
eg:去重计数uniq -c
root@ipt opt]# cat oldboy.txt
10.0.0.7
10.0.0.7
10.0.0.7
[root@ipt opt]# uniq oldboy.txt //去重
10.0.0.7
[root@ipt opt]# uniq -c oldboy.txt //-c计数
3 10.0.0.7
eg:排序sort -n ;-r
[root@ipt opt]# sort -n oldboy.txt //顺序
10.0.0.7
10.0.0.7
10.0.0.8
10.0.0.8
10.0.0.8
10.0.0.8
10.0.0.9
[root@ipt opt]# sort -r oldboy.txt //逆序
[root@ipt opt]# sort -t " " -k 2 oldboy1.txt //指定空格为分隔符,按照第2列顺序排序。
10.0.0.8 a
10.0.0.8 b
10.0.0.8 b
10.0.0.8 k
10.0.0.7 m
10.0.0.9 m
10.0.0.7 n
eg:对第三列、第四列排序。
[root@ipt opt]# vim arp.txt
[root@ipt opt]# cat arp.txt
192.168.3.1 00:0F:AF:81:19:1F
192.168.3.2 00:0F:AF:85:6C:25
192.168.3.3 00:0F:AF:85:70:42
192.168.2.20 00:0F:AF:85:55:DE
192.168.2.21 00:0F:AF:85:6C:09
192.168.2.22 00:0F:AF:85:5c:41
192.168.0.151 00:0F:AF:85:6C:F6
192.168.0.152 00:0F:AF:83:F:65
192168.0.13 00:0F:AF:85:70:03
192.168.1.10 00:30:15:A2:3B:B6
192.168.1.11 00:30:15:A3:23:B7
192.168.1.12 00:30:15:A2:3A:A1
192.168.1.1 00:0F:AF:81:19:1F
192.168.2.2 00:0F:AF:85:6C:25
192.168.3.3 00:0F:AF:85:70:42
192.168.2.20 00:0F:AF:85:55:DE
192.168.1.21 00:0F:AF:85:6C:09
192.168.2.22 00:0F:AF:85:5C:41
192.168.0.151 00:0F:AF:85:6C:F6
[root@ipt opt]# sort -n -t . -k3,3 -k4.1,4.3 arp.txt //字段,字符
192.168.0.151 00:0F:AF:85:6C:F6
192.168.0.151 00:0F:AF:85:6C:F6
192.168.0.152 00:0F:AF:83:F:65
192.168.1.1 00:0F:AF:81:19:1F
192.168.1.10 00:30:15:A2:3B:B6
192.168.1.11 00:30:15:A3:23:B7
192.168.1.12 00:30:15:A2:3A:A1
192.168.1.21 00:0F:AF:85:6C:09
192.168.2.2 00:0F:AF:85:6C:25
192.168.2.20 00:0F:AF:85:55:DE
192.168.2.20 00:0F:AF:85:55:DE
192.168.2.21 00:0F:AF:85:6C:09
192.168.2.22 00:0F:AF:85:5c:41
192.168.2.22 00:0F:AF:85:5C:41
192.168.3.1 00:0F:AF:81:19:1F
192.168.3.2 00:0F:AF:85:6C:25
192.168.3.3 00:0F:AF:85:70:42
192.168.3.3 00:0F:AF:85:70:42
192168.0.13 00:0F:AF:85:70:03
浙公网安备 33010602011771号