2016-04-06 14 views
0

Bu awk işlevini perl'e dönüştürmeye çalışıyorum, bir apache günlük dosyasını ayrıştırır ve son dakikada oluşturulan girişleri yazdırır.awk 2 perl dönüşümü

awk vDate=$(date -d'now-1 minutes' +[%d/%b/%Y:%H:%M:%S]) '$4 > Date ' 

ben Perl programının yeniyim ve ben Perl programının sistem fonksiyonunu $(date -d'now-1 ..etc) entorplate nasıl şimdi eminim.

+0

awk'deki '>' karşılaştırmasının, bu formattaki tarihleri ​​doğru şekilde karşılaştırabileceğinden emin misiniz? – choroba

+2

[Time :: Piece] 'i (https://metacpan.org/pod/Time::Piece) deneyin, [Hemen her zaman için Time :: Piece ile özme ihtiyacını çözün] (http://perltricks.com/article/59/2014/1/10/Solve-neredeyse-herhangi-datetime-need-with-Time - Parça /) –

+0

Backlicks '$ perl -e '$ d = \' date \ 'ile Perl'de sistem çağrısı yapabilirsiniz. ; $ d'' yazdı – dawg

cevap

4

Kullanım Time::Piece:

perl -MTime::Piece -ane ' 
    BEGIN { $now = time } 
    print if Time::Piece->strptime($F[3], "[%d/%b/%Y:%H:%M:%S]")->epoch 
      > $now - 60' access_log 

Ayrıca, daha sonra bütün silebilirsiniz $^T yerine $now kullanabilirsiniz blok BEGIN.

perl -MTime::Piece -ane ' 
    print if Time::Piece->strptime($F[3], "[%d/%b/%Y:%H:%M:%S]")->epoch 
      > $^T - 60' access_log