海运的博客

Linux下多种方法删除重复行/列

发布时间:November 19, 2012 // 分类:Shell // No Comments

Linux下文本处理工具很丰富很强大,去重复行可用以下方法:

cat log 
www.haiyun.me 192.168.1.1
www.haiyun.me 192.168.1.1
www.haiyun.me 192.168.1.2

使用uniq/sort删除重复行,仅能对整行操作。

uniq log 
sort -u log 
uniq log 
www.haiyun.me 192.168.1.1
www.haiyun.me 192.168.1.2

使用awk按列删除重复行,也可按多列或整行操作。

awk '!i[$1]++' log 
www.haiyun.me 192.168.1.1

使用sed删除重复行:

sed '$!N; /^\(.*\)\n\1$/!P; D' log
www.haiyun.me 192.168.1.1
www.haiyun.me 192.168.1.2

Awk/Sed中调用shell变量方法

发布时间:May 19, 2012 // 分类:Shell // No Comments

Awk和Sed是Linux下很强大的两个文件处理工具,在编写Shell的时候经常要调用变量,记录调用方法。
1.Awk中调用方法:
1.1.使用"'$var'"方式:

#/bin/bash
num=1
awk -F: '{print $"'$num'"}' /etc/passwd

1.2.通过awk -v参数定义:

#!/bin/bash 
num=1
awk -v a=$num -F: '{print $a}' /etc/passwd

2.Sed中调用方法:

#!/bin/bash
#https://www.haiyun.me
for ((i=1; i<25; i++))
do
        ip=`sed -n "$i"p ip.txt`
        sed -i ''"$i"' s/$/ '"$ip"'/' ip-mac.txt
done

Nginx/Apache/Lnmp网站常用日记统计命令

发布时间:April 13, 2012 // 分类:日记分析 // No Comments

Nginx配置日记格式为Apache日志格式,便于分析。
1.访问次数最多的前10个IP。

awk '{print $1}' www.haiyun.me.log|sort|uniq -c|sort -rn|head -n 10

2.访问次数最多的10个页面。

awk '{print $7}' www.haiyun.me.log|sort|uniq -c|sort -rn|head -n 10

3.访问最多的时间,取前十个。

awk '{print $4}' www.haiyun.me.log|cut -c 14-18|sort|uniq -c|sort -rn|head -n10

4.查看下载次数最多的文件,显示前10个。

awk '{print $7}' www.haiyun.me.log|awk -F '/' '{print $NF}'|sort|uniq -c|sort -rn|head -n 10
#如统计请求链接去除awk -F '/' '{print $NF}'|sort|

5.统计网站流量,以M为单位。

awk '{sum+=$10} END {print sum/1024/1024}' www.haiyun.me.log

6.统计IP平均流量、总流量。

awk 'BEGIN {print"ip average total"}{a[$1]+=$10;b[$1]++}END{for(i in a)print i,a[i]/1024/1024/b[i]"MB",\
a[i]/1024/1024"MB"}' www.haiyun.me.log |column -t

7.用sed统计特定时间内日志,配合以上使用awk分析。

sed -n '/10\/Feb\/2012:18:[0-9][0-9]:[0-9][0-9]/,$p' www.haiyun.me.log
#截取二月10号18点后所有日志
sed -n '/10\/Feb\/2012:18:[0-9][0-9]:[0-9][0-9]/,/10\/Feb\/2012:20:[0-9][0-9]:[0-9][0-9]/p' \
www.haiyun.me.log
#截取二月10号18点到20点之间日志

8.统计404或403最多的网址。

awk '$9 ~ /403/ {print $7}' www.haiyun.me.log|sort|uniq -c|sort -rn|head -n 80
awk '$9 ~ /404/ {print $7}' www.haiyun.me.log|sort|uniq -c|sort -rn|head -n 80
分类
最新文章
最近回复
  • crowjin: 你确定这能过滤??不是所有请求都返回空地址::?
  • : linux系统上单个网卡多条宽带拨号获取公网IP,外网可以访问这些IP,有偿! Q:25299...
  • 硅谷少年: 非常有用,感谢分享
  • spartan2: https://dashboard.hcaptcha.com/welcome_accessib...
  • 海运: 应该能,在购买页面先手工跳过cf机器验证,后续一定时间内不更换ip应该不会再次验证。
  • spartan: 大佬斯巴达开启了CF的机器识别验证,请问插件能自动跳过吗? 另外这个脚本有没有简单使用说明,新...
  • vincent: 膜拜大佬
  • 海运: proxy-header或proxy_protocol
  • liangjw: 如果是 内部调用 或者 中间存在 代理 而上一个代理又在内网 ,那怎么处理来自代理私有IP?
  • chainofhonor: 感谢,用dnsmasq设置自动判断BIOS和UEFI成功了