Ostatnio zapragnąłem obejrzeć sobie zawartość z plikiem logu serwera Apache. Cel był następujący:
- wybrać tylko określone linie przy użyciu polecenia
grep
- wyświetlić 20 ostatnich linii
- wyświetlić je od końca, tak aby linie które pojawiają się na końcu były wyświetlane jako pierwsze
Dwa pierwsze punkty w realizacji są proste:
Teraz pozostaje odwrócić kolejność linii. Pierwsze moje skojarzenie to polecenie sort
z przełącznikiem -r
, czyli coś takiego:
Niestety, to nie zadziała. Dostaniemy nie odwróconą zawartość pliku, ale po prostu posortowany plik od wartości największej do najmniejszej.
Więc pozostaje dodanie numeracji do pliku (polecenie cut -n
i posortowanie zawartości:
Efekt tym razem odpowiedni, ale jeszcze zostały dodatkowe linie z numeracją, można je usunąć za pomocą polecenia cut
:
I koniec końców efekt jest zgodny z oczekiwaniami.
Przeglądając jeszcze dokumentację do polecenia cat
zauważyłem jeszcze jedną komendę: tac
, która działa jako odwrotność polecenia cat
. Używając tej komendy, skrypt będzie wyglądał następująco:
I po sprawie :). Morał: warto czytać strony MAN, można zaoszczędzić sporo czasu, pisania i mocy maszyny.