日期:2014-05-16  浏览次数:20671 次

linux怎么根据给定的条件查询多个日志文件的信息
如题,日志文件是java程序每天自动增长的:item.2012-04-24.log, item.2012-04-25.log, item.log,
日志文件内容:
2012-04-26 17:10:00 UserId=10012|EntryId=100001|Npc获得物品
2012-04-26 17:11:00 UserId=10012|EntryId=100002|销毁物品
。。。。。

我要查询2012-04-24 到 2012-04-26的物品id(EntryId)= 100001的所有日志信息,请问要怎么查? 谢谢!

------解决方案--------------------
需要以下操作结合起来,不给全部脚本了:

echo "item.2012-04-24.log" | cut -d '.' -f 2; 这是拿到日期2012-04-24
date -d "2012-04-24" +"%s" 是获得UNIX时间戳,同样的办法可以用于时间范围,得到范围的时间戳,这样就可以知道哪些文件在范围内了.

当然,这是遍历的算法,你也可以先获得范围的时间戳,看看中间一共有几天,就是时间戳的差/24/60/60,之后使用date -d "2012-4-26 +1day" +"%Y-%m-%d",看到day之前那个1了吗,就可以逐渐增加表示几天后,这样就不是遍历了。
------解决方案--------------------
grep "EntryId=100001" item.2012-04-24.log item.2012-04-25.log item.2012-04-26.log -n
------解决方案--------------------
grep 'EntryId=100001' item.2012-04-2[4-6].log