LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1727|回复: 4

如何用shell打印下列格式日志文件中某个时间段的内容

[复制链接]
发表于 2006-10-18 17:45:26 | 显示全部楼层 |阅读模式
2006-10-18-00.51.23.786726+480 I5172512C421       LEVEL: Warning
PID     : 372766               TID  : 1           PROC : db2logmgr (KABUSR) 0
INSTANCE: kabusr1              NODE : 000
FUNCTION: DB2 UDB, data protection, sqlpgArchiveLogFile, probe:3180
MESSAGE : Successfully archived log file S0002904.LOG to
          /kabusr1/arclog/kabusr1/KABUSR/NODE0000/C0000000/ from
          /kabusr1/kabusr/actlog/NODE0000/.

2006-10-18-00.51.52.517843+480 I5172934C317       LEVEL: Event
PID     : 1040480              TID  : 1272        PROC : db2hmon 0
INSTANCE: kabusr1              NODE : 000
FUNCTION: DB2 UDB, Automatic Table Maintenance, db2HmonEvalReorg, probe:10
START   : Automatic reorg evaluation has started on database KABUSR

2006-10-18-00.51.52.756192+480 I5173252C331       LEVEL: Event
PID     : 1040480              TID  : 1272        PROC : db2hmon 0
INSTANCE: kabusr1              NODE : 000
FUNCTION: DB2 UDB, Automatic Table Maintenance, db2HmonEvalReorg, probe:20
START   : Automatic reorg evaluation has finished successfully on database KABUSR


myhost=`hostname`
Mail="ww@test.com"
filedate=`date +"%Y-%m-%d"`

[color="red"]grep -p "$filedate" /db2dump/db2diag.log > /tmp/db2diag.log    # 这条语句只能取某个特定时间而不能针对某个时间范围

mail -s "$myhost  log of $filedate"  $Mail </tmp/db2diag.log


我的疑问是如果要抽取数据的要求是从昨天8点----今天8点,请问这个应该如何写?


谢谢
发表于 2006-10-18 18:25:00 | 显示全部楼层
<----grep -p "$filedate" /db2dump/db2diag.log > /tmp/db2diag.log # 这条语句只能取某个特定时间而不能针对某个时间范围---->
你在grep的输出结果用管道符再进行一次匹配。然后再输入log文件里面不就可以实现了吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-20 10:40:20 | 显示全部楼层
我现在是通过这种方式实现的,个人觉得比较差,还请高人指点

#!/usr/bin/ksh

HOST=`hostname`
MAILDROP="eileen@ivo.com.cn,gaoxiao2002@hotmail.com"
LOGDIR=/db2dump/kabusr1
TodayLog=`date +%Y-%m-%d`
Year=`date +%Y`
Month=`date +%m`
Day=`date +%d`
LastDay=`expr $Day - 1`
LastdayLog=${Year}-${Month}-${LastDay}
[color="Red"]grep -p -E "${TodayLog}|${LastdayLog}" "${LOGDIR}"/db2diag.log >/worktmp/${HOST}.${TodayLog}.db2diag.log
mail -s "${HOST} db2diaglog of $TodayLog" ${MAILDROP}</worktmp/${HOST}.${TodayLog}.db2diag.log
回复 支持 反对

使用道具 举报

发表于 2006-10-20 10:58:32 | 显示全部楼层
想问下楼上的,上面grep 这条命令的意思是什么,我也遇到过grep -pE这种用法,不过一直不清楚具体何解
[PHP]grep -p -E "${TodayLog}|${LastdayLog}" "${LOGDIR}"/db2diag.log >/worktmp/${HOST}.${TodayLog}.db2diag.log[/PHP]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-20 11:19:42 | 显示全部楼层
grep -p 是打印 与关键子同一段的所有内容

     -E 是表示打印符合条件的多个关键子


偶是这样理解的,还请高手指点
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表