我有需要剪切的日志文件,每行输出DD-MM-YYYY HH:MM:SS。理想情况下,我希望这样一个文件的最后10分钟。
我有一个perl命令可以在10分钟前获得时间:
perl -e 'use POSIX qw(strftime); print strftime "%e-%m-%Y %H:%M:%S",\ localtime(time()- 600);'
样本输出:29-02-2012 16:38:14
和一个用于剪切文件的sed命令。这适用于手动日期和系统时间现在作为第二个变量。我不能使用date更高级的功能,因为我使用的是Solaris 8我认为和c shell。
sed '1,/29-02-2012 16:07/d;/=$(date +%d-%m-%y %H:%M:%S")/,$d' debug.log | tee cut-log | less
任何帮助表示赞赏...
答案 0 :(得分:2)
只需在perl中执行整个操作,使用..
运算符。像
perl -MPOSIX -n -e 'print if /@{[ strftime "%e-%m-%Y %H:%M:%S",\ localtime(time()- 600) ]}/ .. /@{[ strftime "%e-%m-%Y %H:%M:%S",\ localtime(time()) ]}/ '
编辑:代码粘贴不好。我修好了。
答案 1 :(得分:1)
$(date)
不会在单引号字符串中展开。改为双引号。
sed "1,/29-02-2012 16:07/d;/=$(date +'%d-%m-%y %H:%M:%S')/,\$d"