只输出最后2分钟的日志

我有一个日志文件:
http://pastebin.com/raw.php?i=cdUpTqNV

在“ASDF”之前的第一列是同一时间,在给定的行,但在unix时间[我认为这是更容易做到这一点unix时间]。

我只需要最近2分钟内的线路:
结束时间:07:55:08 – 日志文件中的最后一次
开始时间:07:53:09 – 最多2分钟前的日志文件中的最后一个日志行

pastebined文本的输出将是:
1295938389ASDF 01 25 07:53:09 router authpriv.notice dropbear[20673]: password auth succeeded for 'root' from 192.168.1.201:43822
1295938401ASDF 01 25 07:53:21 router daemon.info dnsmasq-dhcp[1140]: DHCPREQUEST(br-lan) 192.168.1.201 01:2c:23:c3:32:f3
1295938401ASDF 01 25 07:53:21 router daemon.info dnsmasq-dhcp[1140]: DHCPACK(br-lan) 192.168.1.201 01:2c:23:c3:32:f3
1295938508ASDF 01 25 07:55:08 router daemon.info dnsmasq-dhcp[1140]: DHCPREQUEST(br-lan) 192.168.1.201 01:2c:23:c3:32:f3
1295938508ASDF 01 25 07:55:08 router daemon.info dnsmasq-dhcp[1140]: DHCPACK(br-lan) 192.168.1.201 01:2c:23:c3:32:f3

如何使用最小的* nix工具来做到这一点? [这是一个OpenWrt路由器,没有perl:]

所以,如何做到这一点:只输出行(上次login行时间 – 120秒)?

谢谢!

试试这个:

 last=$(sed -n '$s/^\([0-9]\+\).*/\1/p') awk -F ASDF -v last=$last '$1 >= last - 120' 

你可以得到这样的当前时间戳:

 date +s% 

和当前的时间戳 – 例如2分钟这种方式:

 date -d @$((`date +%s`-120)) +%s 

所以你有两个整数值,你想grep行在这个范围内开始。 有很多方法可以做到这一点(awk,sed,…)

sed示例:

 sed -n -e '/start_time_stamp/,/stop_time_stamp/p' log_file 

对于其他方式,请尝试这个macros伟的工具: http : //lmgtfy.com/?q=grep+number+range