linux awk,sort,grep,sed指令简单应用(ip连接数,排前10的url,某一时间段的ip连接数)

例子

通过日志查看当天ip连接数,过滤重复:

1、查看nginx/apc进程:nginx/httpd

[root@localhost ~]# ps -ef | grep nginx
root       7294      1  0 01:15 ?        00:00:00 nginx: master process /opt/nginx/sbin/nginx -c /opt/nginx/conf/nginx.conf
www        7296   7294  0 01:15 ?        00:00:00 nginx: worker process
root       7647   7620  0 01:17 pts/0    00:00:00 grep --color=auto nginx
[root@localhost ~]# ps aux | grep nginx
root       7294  0.0  0.0  20956   940 ?        Ss   01:15   0:00 nginx: master process /opt/nginx/sbin/nginx -c /opt/nginx/conf/nginx.conf
www        7296  0.0  0.1  21440  1916 ?        S    01:15   0:00 nginx: worker process
root       7654  0.0  0.0 112708   988 pts/0    R+   01:18   0:00 grep --color=auto nginx
[root@localhost ~]# ps aux | grep nginx | grep -v grep | wc -l
2

备注:ps -ef 与ps aux  是两种风格不同,输出略有不同;
wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。-c 统计字节数。-l 统计行数。-m 统计字符数。这个标志不能与 -c 标志一起使用。-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。-L 打印最长行的长度。-help 显示帮助信息--version 显示版本信息

wc 文档

2、当天ip连接数最高的ip都在访问什么(去掉参数  sed 文本替换)

[root@localhost log]# awk '{print $9}' log_2019-03-14.log | sort | uniq -c | sort -nr | head -n 10
 150812 http://blog.ci123.com/main.html
 125915 http://blog.ci123.com/images/rbgs.gif
  67402 http://blog.ci123.com/yixinbaobaodekuaile/categories/340176&pstyle=2&pstyle=0&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=0&pst&pstyle=2&pstyle=0&pstyle=0&pstyle=2&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=2&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&&pstyle=0&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=2
  61913 http://blog.ci123.com/images/bgs.gif
  22552 http://blog.ci123.com/
   6614 http://blog.ci123.com/js/validate.js?v=1
   5281 http://blog.ci123.com/js/common.js?v=6
   3966 http://blog.ci123.com/images/rss_button.gif
   3785 http://blog.ci123.com/images/tplogo.gif
   3611 http://blog.ci123.com/images/muying.jpg

去掉参数 sed

[root@localhost log]# cat log_2019-03-14.log | sed -e "s/&.*//g" | awk '{print $9}' | sort | uniq -c | sort -nr | head -n 10  

最高访问最高的ip在干嘛,

cat log_2019-03-14.log | grep "119.57.159.182" | grep '14/Mar/2019' | awk '{print $9}' | sort | uniq -c | sort -nr

备注:head (head) 用来显示档案的开头至标准输出中。

如果指定了多于一个文件,在每一段输出前会给出文件名作为文件头。如果不指定文件,或者文件为"-",则从标准输入读取数据。

-c,  --bytes=[-]K    显示每个文件的前K 字节内容;如果附加"-"参数,则除了每个文件的最后K字节数据外 显示剩余全部内容
-n, --lines=[-]K    显示每个文件的前K 行内容;如果附加"-"参数,则除了每个文件的最后K行外 显示剩余全部内容
-q, --quiet, --silent    不显示包含给定文件名的文件头
-v, --verbose        总是显示包含给定文件名的文件头
    --help        显示此帮助信息并退出
    --version        显示版本信息并退出

 

 uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。

 uniq 可检查文本文件中重复出现的行列。

uniq 文档

3、当天访问页面排前10的url

[root@localhost log]# cat log_2019-03-14.log | grep "14/Mar/2019" | awk '{print $1}' | uniq -c | sort -nr | head -n 10
     59 1***6.96
     57 6***.247
     50 6***.247
     44 6***.247
     44 2****186
     44 1***3.23
     43 6****5.247
     43 1***20.243
     43 1***34.65
     42 1***36.96

4、查看某一时间段的ip连接数(以及总数  wc -l)

   1725 1***9.181
   1745 47***8.216
   1752 47***.216
   1772 4***8.142
   1806 39**72.228
   2657 12***40.176
   3237 11***59.182
[root@localhost log]# grep "2019:0[7-9]" log_2019-03-14.log | awk '{print $1}' | sort | uniq -c | sort -n
[root@localhost log]# cat log_2019-03-14.log | grep "14/Mar/2019" | awk '{print $1}' | sort | uniq -c | sort -nr | wc -l
196256

5、通过日志查看当天ip连接数,过滤重复:(并计算总数)

  13429 11**.183
  13625 39****2.228
  13724 4***8.216
  15115 12***.176
  26320 11***182
[root@localhost log]# grep "14/Mar/2019" log_2019-03-14.log | awk '{print $1}' | sort | uniq -c | sort -n

特定url 数

[root@localhost log]# grep "http://bl*****/js/common.js?v=6" log_2019-03-14.log | awk '{print $9}' | sort | uniq -c | sort -n
      1 http://b****om/js/common.js?v=6&_fp662=0.6628273894087775
   5281 http://b****om/js/common.js?v=6


6、查看80端口的tcp连接:
netstat -tan | grep “ESTABLISHED” | grep “:80″ | wc -l
7、用tcpdump嗅探80端口的访问看看谁最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F”.” ‘{print $1″.”$2″.”$3″.”$4}’ | sort | uniq -c | sort -nr
接着从日志里查看该ip在干嘛:
cat access_log | grep 122.102.7.212| awk ‘{print $1″\t”$8}’ | sort | uniq -c | sort -nr | less

 

 

sort 对文件内容进行排序

sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]
-b:忽略每行前面开始的空格字符,空格数量不固定时,该选项几乎是必须要使用的("-n"选项隐含该选项,测试发现都隐含)
-c:检查文件是否已经按照顺序排序,如未排序,会提示从哪一行开始乱序
-C:类似于"-c",只不过不输出任何诊断信息。可以通过退出状态码1判断出文件未排序
-d:只处理英文字母、数字及空格,忽略其他的字符
-f:将小写字母视为大写字母
-h:使用易读性数字(例如:2K、1G)
-i:除了040至176之间的ASCII字符外(八进制0-177),忽略其他的字符(忽略无法打印的字符如退格/换页键/回车)
-k:以哪个区间 (field) 来进行排序
-m:将几个排序好的文件进行合并,只是单纯合并,不做排序
-M:将前面3个字母依照月份的缩写进行排序
-n:依照数值的大小排序
-o<输出文件>:将排序后的结果存入指定的文件
-r:降序
-u:忽略相同行
-t<分隔字符>:指定分隔符,默认的分隔符为空白字符和非空白字符之间的空字符

参考例子  https://www.jianshu.com/p/c4d159a98dd8

 

 

linux中grep命令的用法

 

awk 用法(使用入门)

 

sed命令详解

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值