Chinaunix首页 | 论坛 | 博客
  • 博客访问: 17183
  • 博文数量: 14
  • 博客积分: 335
  • 博客等级: 一等列兵
  • 技术积分: 110
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-14 19:09
文章分类
文章存档

2011年(14)

我的朋友
最近访客

分类: LINUX

2011-06-10 10:42:34

看到以前的一道shell面试题,心血来潮,看看自己现在能做了吗?!小试一下……
 
在access.log中截取 16/Aug/2010:14:31:30到17/Aug/2010:10:12:07间的日志信息,并输出到log.txt中,我的思路,用sed打印 16/Aug/2010:14:31:30和17/Aug/2010:10:12:07间的日志并>
 
#!/bin/bash
 
n1=`grep -n '16\/Aug\/2010:14:31:30' access.log|head -1|cut -d ':' -f1`
 
n2=`grep -n '17\/Aug\/2010:10:12:07' access.log|tail -1|cut -d ':' -f 1`
 
sed -n "${n1},${n2}p" access.log >log.txt
 
另外sed还有更简单的方法
 
sed -n '/16\/Aug\/2010:14:31:30/,/17\/Aug\/2010:10:12:07/'p >log.txt
 
但是此命令思路是对的,可是当access.log 在同一时间内有大量并发访问日志时,这个就不准确了。最完善的还要算第一种思路。
阅读(391) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~