- 论坛徽章:
- 0
|
你把 3 天前的时间计算出来,然后循环这个文件把所有 3 天后的行输出到另外一个文件里。然后把这个文件更名成旧的文件覆盖。
既然你说这个文件是实时的,那么可以尝试建个 cron job 到深夜时运行这个程序。更名很快,而且选择在很晚运行应该可以解决你的问题。
下面这段没完全解决你的问题,但如果你了解一点 Perl 就可以完成你想做的。鼓励你自己去学习吧。
- #!/usr/bin/perl
- use strict;
- use warnings;
- use Time::Local;
- my ($d,$m,$y) = (localtime)[3,4,5];
- my $time = timelocal(0,0,0,$d,$m,$y+1900);
- $time = $time - 60*60*24*3 ;
- ($d,$m,$y) = (localtime $time)[3,4,5];
- my $days_ago = sprintf("%04d%02d%02d",$y+1900,$m+1,$d--);
- # 今天是 20060320, $days_ago 是 3 天前。即 20060317
- while (<>) {
- if ((split ",",$_)[1]=~ /^(\d{8})/) {
- print unless $1 > $days_ago;
- }
- }
复制代码
运行 perl time.pl 文件名试试。
## 这段程序没有测试....
另外, 用 Date::Calc 模块的 Add_Delta_Days 方法计算会更容易些。
[ 本帖最后由 Qiang 于 2006-3-20 01:33 编辑 ] |
|