2010-02-10 17 views
8

Mam skrypt Perla, który będzie działał w zadaniu cron w systemie Linux. Za wczytanie pobierze plik dziennika wygenerowany wczoraj. Nazwa pliku dziennika zawiera datę (tj. Log.20100209)Jak mogę uzyskać i sformatować wczorajszą datę w wierszu poleceń?

Czy mogę wysłać wczorajszą datę z formatem w podpowiedzi? Czy powinienem utworzyć dodatkowy skrypt, aby uzyskać datę i wykonać? Jeśli tak, jak mogę to zrobić?

Dzięki

perl myscript.pl -f log.20100209 

Edytuj

dzięki za pomoc

to działało z:

perl myscript.pl -f log.`date --date='yesterday' '+%Y%m%d'` 

Odpowiedz

28

data GNU:

date --date='yesterday' '+%Y%m%d' 
+0

+1 I wolałbym to do mojego własnego Perla poniżej :) –

+0

Łatwo i czytelnie, dzięki! – Cesar

1

Można uzyskać datę wczorajszą tak:

perl -we'@a=localtime(time-24*3600);printf "%04d%02d%02d", $a[5]+1900, $a[4]+1, $a[3]' 

Można to wykorzystać podczas wywoływania skryptu w wierszu:

perl myscript.pl -f log.`perl -we'@a=localtime(time-24*3600);printf "%04d%02d%02d", $a[5]+1900, $a[4]+1, $a[3]'` 

Ale to jest nieczytelny, a ja proponuję napisać odpowiedni skrypt, który oblicza datę wczorajszą, a następnie wywołuje myscript.pl.

+0

Zobacz także: http://theoryx5.uwinnipeg.ca/CPAN/perl/pod/perlfaq4/How_do_I_find_yesterday_date.html i http://flux.org.uk/howto/perl/yesterday_date –

0

Nie ma potrzeby wysyłania datę wczorajszą jako dodatkowy parametr. już można dostać go za pomocą dwóch innych metod:

  1. Perl wbudowanego w czasie(), localtime(), lub gmtime() funkcje daje bieżącą datę i czas, i można pracować z tym w celu ustalenia wczorajsza data.
  2. Jest już zawarty w nazwie pliku dziennika, więc możesz przeanalizować nazwę pliku, aby uzyskać datę w formacie, który potrzebujesz.

Perl ma a lot of modules do pracy z datami i czasami, w zależności od tego, co trzeba zrobić.

+0

Dzięki, ale chcę czegoś prostego, co pozwala zachować niezależność od pliku dziennika – Cesar

Powiązane problemy