免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5390 | 回复: 13
打印 上一主题 下一主题

【求助】提取时间段之间的日志内容,有点特殊 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-02-16 10:55 |只看该作者 |倒序浏览
本帖最后由 AmboLong 于 2012-02-16 11:21 编辑

有x.log的日志文件,内容大体如下:
2012-02-15 10:58:38,994 - (ab.count,Y,2ms)
2012-02-15 10:58:39,399 - (cc.count,Y,1ms)
2012-02-15 10:58:43,630 - (hh.count,Y,1ms)
2012-02-15 10:59:47,580 - (ss.count,Y,2ms)
2012-02-15 11:02:10,300 - (cc.count,Y,1ms)
2012-02-15 11:04:36,647 - (gg.count,Y,1ms)
2012-02-15 11:05:30,292 - (aa.execute,Y,15ms)

......

希望提取2012-02-15 10:59:00 到 2012-02-15 11:05:00的行,如何匹配呢(日志内容中没有以这二个时间点行)


另外如果2012-02-15 10:59:00 和2012-02-15 11:05:0    这两个值是从命令行传入的变量$2、$3,这个要怎么写呢

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
2 [报告]
发表于 2012-02-16 10:59 |只看该作者
回复 1# AmboLong


    try:
  1. awk -F, '$1>"2012-02-15 10:59:00" && $1 < "2012-02-15 11:05:00" urfile
复制代码

论坛徽章:
0
3 [报告]
发表于 2012-02-16 11:01 |只看该作者
sed -n '/10:59/,/11:04/p' data1.txt

论坛徽章:
0
4 [报告]
发表于 2012-02-16 11:16 |只看该作者
回复 2# blackold


如果2012-02-15 10:59:00 和2012-02-15 11:05:0    这两个值是从命令行传入的变量$2、$3,这个要怎么写呢

论坛徽章:
0
5 [报告]
发表于 2012-02-16 11:23 |只看该作者
回复 3# askandstudy


如果日志
2012-02-15 11:04:36,647 - (gg.count,Y,1ms)
2012-02-15 11:06:30,292 - (aa.execute,Y,15ms)   
是这样的,没有11:05这一分,sed如何搞呢

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
6 [报告]
发表于 2012-02-16 11:25 |只看该作者
回复 4# AmboLong


    依样画葫芦
  1. awk -F, -v d1=$2 -v d2=$3 '$1>d1 && $1 < d2' urfile
复制代码

论坛徽章:
0
7 [报告]
发表于 2012-02-16 12:05 |只看该作者
回复 6# blackold
大侠此招甚为高明,想我之前都是通过提取时间点转换成unix utc时间来比较大小的,从没想到awk居然能直接比较时间字符串,受教受教...同时感谢AmboLong兄弟的提问...

论坛徽章:
0
8 [报告]
发表于 2012-02-16 12:15 |只看该作者
回复 5# AmboLong

可能还是awk比较好处理吧
   

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
9 [报告]
发表于 2012-02-16 13:41 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
10 [报告]
发表于 2012-02-16 14:23 |只看该作者
回复 9# zooyo
的确是这样子的,经测试发现awk就是依次按字符来比较的,并不能识别时间字符串所代表的先后意义。用于类似下例比较时,没法达到预期的效果....
  1. [root@mail destiny]# cat /tmp/data1
  2. Feb 14 18:24:49 2011
  3. Feb 16 08:46:15 2012
  4. Feb 16 08:46:15 2013
  5. Feb 16 08:46:15 2014

  6. Feb 14 13:24:49 2011
  7. Feb 16 12:46:15 2012
  8. Feb 16 11:46:15 2013
  9. Feb 16 10:46:15 2014
  10. [root@mail destiny]# awk '$0 > "Feb 14 15:10:17 2015"{print $0}' /tmp/data1
  11. Feb 14 18:24:49 2011
  12. Feb 16 08:46:15 2012
  13. Feb 16 08:46:15 2013
  14. Feb 16 08:46:15 2014
  15. Feb 16 12:46:15 2012
  16. Feb 16 11:46:15 2013
  17. Feb 16 10:46:15 2014
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP