Crmgo Blog

Czytanie wierszy z plików

Czytanie wierszy z plików

Przykład 1: Wyświetlanie określonych wierszy według ich numerów za pomocą polecenia sed. Polecenie to umożliwia wyświetlanie tylko tych wierszy, których numery są jawnie określone. Składnia: $ sed -n -e Xp -e Yp NAZWA_PLIKU sed: polecenie,…

Czytanie wierszy z plików

Przykład 1: Wyświetlanie określonych wierszy według ich numerów za pomocą polecenia sed

Polecenie to umożliwia wyświetlanie tylko tych wierszy, których numery są jawnie określone.

Składnia:

  1. $ sed -n -e Xp -e Yp NAZWA_PLIKU

 

sed: polecenie, które domyślnie wyświetla wszystkie bez wyjątku wiersze -n: wyciszenie wyjścia -e CMD: wykonywane polecenie Xp: wyświetlenie wiersza o numerze X Yp: wyświetlenie wiersza o numerze Y NAZWA_PLIKU: nazwa przetwarzanego pliku

W poniższym przykładzie wyświetlane są wiersze 120, 145 i 1050 pliku syslog.

  1. $ sed -n -e 120p -e 145p -e 1050p /var/log/syslog

W następnym przykładzie możesz wyświetlić zawartość pliku /var/log/cron, zaczynając od wiersza numer 101, a kończąc na wierszu numer 110.

M – wiersz początkowy N – wiersz końcowy

Składnia:

  1. sed -n M,Np NAZWA_PLIKU

 

  1. $ sed -n 101,110p /var/log/cron

Przykład 2: Wyświetlanie pierwszych N wierszy pliku za pomocą polecenia head

W tym przykładzie wyświetlane są pierwsze 15 wierszy pliku /var/log/maillog.

Składnia:

  1. head -n N NAZWA_PLIKU

 

  1. $ head -n 15 /var/log/maillog

Aby wyświetlić pierwsze 10 wierszy dziennika, zamień w przykładzie liczbę 15 na 10.

Przykład 3: Nie wyświetlanie ostatnich N wierszy pliku za pomocą polecenia head

Poniższy przykład pokazuje, jak zignorować ostatnie N wierszy i wyświetlić tylko pozostałe wiersze od początku pliku.

Składnia:

  1. head -n -N PLIK

Poniższy przykład pokazuje, jak wyświetlić wszystkie wiersze pliku /var/log/secure, z wyjątkiem ostatnich 250.

  1. $ head -n -250 /var/log/secure

Przykład 4: Wyświetlanie ostatnich N wierszy pliku za pomocą polecenia tail

Składnia: tail -n N PLIK

W tym przykładzie wyświetlane są tylko ostatnie 50 wierszy pliku /var/log/messages. Aby wyświetlić ostatnie 100 wierszy dziennika, zamień 50 na 100.

  1. $ tail -n 50 /var/log/messages

Przykład 5: Nie wyświetlanie pierwszych N-1 wierszy pliku za pomocą polecenia tail

Dzięki temu poleceniu można zignorować pierwsze N-1 wierszy i wyświetlić tylko pozostałe wiersze.

Składnia:

  1. tail -n +N PLIK

Poniższy przykład pokazuje, jak zignorować pierwsze 4 wiersze pliku /etc/xinetd.conf, które zawierają tylko komentarze.

  1. $ tail -n +5 /etc/xinetd.conf
  2. defaults
  3. {
  4. instances = 60
  5. log_type = SYSLOG authpriv
  6. log_on_success = HOST PID
  7. log_on_failure = HOST
  8. cps = 25 30
  9. }
  10. includedir /etc/xinetd.d

Przykład 6: Podgląd powiększającego się dziennika w czasie rzeczywistym za pomocą polecenia tail

Prawdopodobnie jest to jedno z najczęściej używanych przez administratorów systemów poleceń. Aby wyświetlać rosnący plik i wyprowadzać tylko zaktualizowaną zawartość dziennika, użyj polecenia tail -f, jak pokazano poniżej.

W poniższym przykładzie wyświetlana jest w czasie rzeczywistym zawartość pliku /var/log/syslog.

Składnia:

  1. tail -f NAZWA_PLIKU

 

  1. $ tail -f /var/log/syslog

Przykład 7: Wyświetlanie określonych wierszy (wg numeru wiersza) za pomocą poleceń head i tail

M – wiersz początkowy N – wiersz końcowy

Składnia:

  1. cat plik | tail -n +N | head -n (M-N+1)

Poniższy przykład wyświetla wiersze 101–110 pliku /var/log/anaconda.log.

  1. $ cat /var/log/anaconda.log | tail -n +101 | head -n 10

 

cat: wyprowadza cały plik do stdout. tail -n +101: ignoruje wiersze do podanego numeru, a następnie zaczyna wyprowadzać wiersze, zaczynając od niego. head -n 10: wyprowadza pierwsze 10 wierszy, czyli od 101 do 110; pozostałe ignoruje.

Przykład 8: Wyświetlanie wierszy pasujących do wzorca oraz kilku wierszy bezpośrednio za nimi.

Poniższy przykład pokazuje, jak wyświetlić wiersze pasujące do wzorca „Initializing CPU” z pliku /var/log/dmesg, a także 5 wierszy bezpośrednio za nimi.

  1. # grep "Initializing CPU#1" /var/log/dmesg
  2. Initializing CPU#1

[Uwaga: to polecenie wyświetla tylko wiersze pasujące do wzorca]

  1. # grep -A 5 "Initializing CPU#1" dmesg
  2. Initializing CPU#1
  3. Calibrating delay using timer specific routine.. 3989.96 BogoMIPS (lpj=1994982)
  4. CPU: After generic identify, caps: bfebfbff 20100000 00000000 00000000
  5. CPU: After vendor identify, caps: bfebfbff 20100000 00000000 00000000
  6. monitor/mwait feature present.
  7. CPU: L1 I cache: 32K, L1 D cache: 32K

[Uwaga: to polecenie wyświetla pasujący wiersz oraz 5 wierszy po nim]

Do polecenia grep dostępne są również następujące operacje:

Wyświetlanie wierszy pasujących do wzorca – podstawowa funkcja polecenia grep. Wyświetlanie tylko wybranych znaków. Wyświetlanie N wierszy po dopasowaniu za pomocą argumentu -A. Wyświetlanie N wierszy przed dopasowaniem za pomocą argumentu -B. Wyświetlanie N wierszy przed i po dopasowaniu za pomocą argumentu -C.

Przykład 9: Wyświetlanie określonych bajtów z pliku.

Poniższy przykład pokazuje, jak wyświetlić pierwsze 40 lub ostatnie 30 bajtów pliku.
Wyświetlenie pierwszych 40 bajtów pliku syslog.

  1. $ head -c40 /var/log/syslog

Wyświetlenie ostatnich 30 bajtów pliku syslog.

  1. $ tail -c30 /var/log/syslog

Przykład 10: Wyświetlanie skompresowanych logów.

Co pewien czas wszystkie logi systemowe są kompresowane. Możesz rozpakować je „w locie” i przetworzyć wynik za pomocą innego polecenia. Jak to zrobić, pokazano poniżej.

Wyświetlenie pierwszych N wierszy skompresowanego pliku.

  1. $ zcat file.gz | head -250

Wyświetlenie ostatnich N wierszy skompresowanego pliku.

  1. $ zcat file.gz | tail -250

Pominięcie ostatnich N wierszy skompresowanego pliku.

  1. $ zcat file.gz | head -n -250

Pominięcie pierwszych N wierszy skompresowanego pliku.

  1. $ zcat file.gz | tail -n +250

Wyświetlenie wierszy pasujących do wzorca

  1. $ zcat file.gz | grep -A2 'error'

Wyświetlenie zestawu wierszy według podanego zakresu ich numerów.

  1. $ zcat file.gz | sed -n -e 45p -e 52p

Uwaga: wpis mógł powstać z pomocą AI i redakcji. Odpowiedzialny: Dmytro Lomaka, Kaltenkirchen.

Kategorie: sed