如何在sed中包含perl命令?

时间:2012-02-29 16:52:44

标签: perl bash shell sed tcsh

我有需要剪切的日志文件,每行输出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

任何帮助表示赞赏...

2 个答案:

答案 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"