-1

現在の日付が9月22日の形式のcronログファイルがあります

9 月 22 日 13:00:01 ホスト名 crond[24359]: (ルート) CMD (/usr/lib64/sa/sa1 1 1)

以下の形式で「9月21日」までのログファイルを印刷したい

date:time:user:command format
4

2 に答える 2

3

どうですか:

perl -pe 'exit if /^Sep 22/;' input.log
于 2013-09-26T07:15:51.583 に答える
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;
于 2013-09-26T11:58:21.387 に答える