2013-09-26 81 views
-1

我與格式 當前日期的cron日誌文件是09月22如何打印日誌文件直到特定日期

年09月22 13點00分01秒的主機名的crond [24359]:(根)CMD(在/ usr/lib64下/ SA/SA1 1)

我要打印日誌文件,直到 「9月21日」 與下面格式

date:time:user:command format 
+3

你試過了什麼? –

回答

3

如何:

perl -pe 'exit if /^Sep 22/;' input.log 
0

你去那裏:

#!/usr/bin/perl 
use warnings; 
use strict; 
open (my $IN,'<','foo.log') or die "$!"; 
while (<$IN>) { 
    last if /^Sep 22/; 
    print join(':',/^(\w{3}\s\d{1,2})\s(\d{2}:\d{2}:\d{2}).+\((.+?)\) CMD \((.+?)\)/),"\n"; 
} 
close $IN; 

同樣,一個班輪味:

perl -nle "exit if /^Sep 22/;print join(':',/^(\w{3}\s\d{1,2})\s(\d{2}:\d{2}:\d{2}).+\((.+?)\) CMD \((.+?)\)/)" foo.log 

如果你希望能夠在未來再次運行腳本,你可以使用目前的日:

#!/usr/bin/perl 
use warnings; 
use strict; 
my (undef,undef,undef,$mday,$mon)=localtime(time); 
my @abbr=qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); 
open (my $IN,'<','foo.log') or die "$!"; 
while (<$IN>) { 
    last if /^$abbr[$mon] $mday/; 
    print join(':',/^(\w{3}\s\d{1,2})\s(\d{2}:\d{2}:\d{2}).+\((.+?)\) CMD \((.+?)\)/),"\n"; 
} 
close $IN;