Muszę pobrać ostatnie 100 wierszy dzienników z pliku dziennika. Wypróbowałem polecenie sed
sed -n -e '100,$p' logfilename
Daj mi znać, jak mogę zmienić to polecenie, aby konkretnie pobrać ostatnie 100 wierszy.
Muszę pobrać ostatnie 100 wierszy dzienników z pliku dziennika. Wypróbowałem polecenie sed
sed -n -e '100,$p' logfilename
Daj mi znać, jak mogę zmienić to polecenie, aby konkretnie pobrać ostatnie 100 wierszy.
Odpowiedzi:
Możesz użyć polecenia tail w następujący sposób:
tail -100 <log file> > newLogfile
Teraz ostatnie 100 wierszy będzie obecnych w formacie newLogfile
EDYTOWAĆ:
Nowsze wersje taila, jak wspomina twalberg, użyj polecenia:
tail -n 100 <log file> > newLogfile
tail
wymagają składni tail -n 100 <filename>
...
Spójrz, skrypt seda, który wypisuje 100 ostatnich linii, które możesz znaleźć w dokumentacji seda ( https://www.gnu.org/software/sed/manual/sed.html#tail ):
$ cat sed.cmd
1! {; H; g; }
1,100 !s/[^\n]*\n//
$p
$ sed -nf sed.cmd logfilename
Dla mnie jest to o wiele trudniejsze niż twój scenariusz
tail -n 100 logfilename
jest dużo prostsze. I jest dość wydajny, nie odczyta całego pliku, jeśli nie jest to konieczne. Zobacz moją odpowiedź z raportem strace dla tail ./huge-file
: /unix/102905/does-tail-read-the-whole-file/102910#102910
"tail" jest poleceniem wyświetlającym ostatnią część pliku, użycie odpowiednich dostępnych przełączników pomaga nam uzyskać bardziej szczegółowe dane wyjściowe. najczęściej używanym przełącznikiem dla mnie jest -n i -f
STRESZCZENIE
ogon [-F | -f | -r] [-q] [-b liczba | -c liczba | -n numer] [plik ...]
Tutaj
-n liczba: lokalizacja to linie liczbowe.
-f: Opcja -f powoduje, że tail nie zatrzymuje się po osiągnięciu końca pliku, ale raczej czeka na dodanie dodatkowych danych do wejścia. Opcja -f jest ignorowana, jeśli standardowym wejściem jest potok, ale nie, jeśli jest to FIFO.
Pobierz dzienniki ostatnich 100 wierszy
To get last static 100 lines
tail -n 100 <file path>
To get real time last 100 lines
tail -f -n 100 <file path>
Wiem, że to bardzo stare, ale komukolwiek to może pomóc.
less +F my_log_file.log
to po prostu podstawa, mając mniej, możesz zrobić o wiele potężniejsze rzeczy. gdy zaczniesz widzieć dzienniki, możesz przeprowadzić wyszukiwanie, przejść do numeru wiersza, wyszukać wzorzec, i wiele więcej, a także jest szybszy w przypadku dużych plików.
to jak vim dla logów [całkowicie moja opinia]
oryginalna dokumentacja less: https://linux.die.net/man/1/less
mniej ściągawki: https://gist.github.com/glnds/8862214
len=`cat filename | wc -l`
len=$(( $len + 1 ))
l=$(( $len - 99 ))
sed -n "${l},${len}p" filename
pierwsza linia przyjmuje długość (Całkowita liczba wierszy) pliku, a następnie +1 w sumie wierszy, po czym musimy pobrać 100 rekordów, więc -99 z całkowitej długości, a następnie po prostu wstaw zmienne w poleceniu sed, aby pobrać ostatnie 100 wierszy z pliku
Mam nadzieję, że to Ci pomoże.