Linux i tekst – jak szybko czytać pliki i wyciągać z nich konkrety

by Patryk

W poprzednich artykułach ogarnęliśmy podstawy pracy z powłoką Linux: składnię poleceń, poruszanie się po systemie plików oraz tworzenie plików i katalogów.

Teraz czas na kolejny poziom: operacje na plikach i to, co w Linuksie dzieje się praktycznie wszędzie, czyli manipulacje tekstem. Umiejętność szybkiego podglądania zawartości plików, filtrowania danych i wyciągania z nich konkretnych informacji to jedna z najbardziej przydatnych kompetencji w pracy z systemem. Bo kiedy log ma 50 000 linijek, a Ty potrzebujesz tylko tych trzech „podejrzanych”, nie chcesz przewijać go jak powieści na wakacjach.

Polecenia do pracy z plikami

Wyświetlanie tekstu w terminalu: echo

Polecenie echo służy do wyświetlania tekstu w terminalu. Najczęściej używa się go w skryptach albo do szybkich testów („czy to w ogóle działa?”). Wynik echo można też łatwo przekierować do pliku, o czym będzie niżej.


Wyświetlanie zawartości pliku: cat

Jeśli chcesz wyświetlić zawartość pliku, użyj cat. To proste narzędzie do przeglądania plików tekstowych oraz łączenia wielu plików i wyświetlania ich zawartości jeden pod drugim.


Numerowanie linii: nl

Standardowy wynik cat bywa mało czytelny, szczególnie w dłuższych plikach. Lepszym wyborem jest nl, które zostało stworzone do numerowania linii i wyświetlania wyniku na ekranie.


Wygodne czytanie długich plików: more i less

Polecenie more wyświetla zawartość pliku „stronami”, co ułatwia przeglądanie długich dokumentów.

Sterowanie:

  • Enter — linia po linii
  • Spacja — strona po stronie
  • b — powrót do poprzedniej strony
  • q — wyjście

Jest też less, który działa podobnie, ale jest dużo wygodniejszy: pozwala przewijać w przód i w tył, wyszukiwać frazy i poruszać się po tekście. W praktyce to najczęstszy wybór do czytania logów.

Sterowanie:

  • /fraza — szukaj frazy
  • n — następne dopasowanie
  • N — poprzednie dopasowanie

Podgląd początku pliku: head

Polecenie head wyświetla pierwsze linie pliku. Jest przydatne, gdy pracujesz z dużymi plikami i chcesz szybko sprawdzić początek bez wczytywania całości. Po przełączniku -n podajesz liczbę linii do wyświetlenia.


Podgląd końca pliku: tail

Polecenie tail działa analogicznie do head, ale pokazuje końcówkę pliku. Świetne do logów, bo najświeższe wpisy zazwyczaj są na końcu.


Wyszukiwanie w plikach: grep

grep to jedno z najważniejszych narzędzi w terminalu. Służy do wyszukiwania linii pasujących do wzorca (np. słowa lub fragmentu tekstu). Idealny do filtrowania logów i wyciągania konkretnych informacji.


Wycinanie kolumn: cut

cut pozwala „wycinać” fragmenty z każdej linii i wyświetlać tylko wybrane kolumny. Działa świetnie, gdy dane mają prostą strukturę (np. są rozdzielane separatorem).

Przykład: wyświetlenie pierwszej kolumny, gdzie separatorem jest ::


Bardziej elastyczna praca na kolumnach: awk

Polecenie awk jest bardziej elastyczne niż cut i świetnie nadaje się do wyciągania informacji z tekstu. Przykładowo możesz wyświetlić tylko kolumnę 1 i 3.


Sortowanie danych: sort

Polecenie sort sortuje tekst alfabetycznie lub numerycznie.

Przykłady:

  • Sortowanie wartości numerycznych rosnąco: sort -n plik.txt
  • Sortowanie wartości numerycznych malejąco: sort -r plik.txt

Usuwanie duplikatów: uniq

Polecenie uniq identyfikuje i usuwa zduplikowane linie. Ważne: zadziała poprawnie, jeśli duplikaty są obok siebie, dlatego zwykle łączy się je z sort.

Jeśli dodasz -c, zobaczysz też liczbę wystąpień.


Operacje wejścia/wyjścia

Podstawowy przepływ pracy dowolnego polecenia systemu Linux polega na tym, że pobiera dane wejściowe z klawiatury (stdin) i wyświetla dane wyjściowe na ekranie (stdout). Dane wejściowe możemy w łatwy sposób skierować do pliku lub z pliku. Służy do tego strumieniowanie danych.

Przekierowanie wyniku do pliku: > i >>

Do przekierowania wyniku polecenia do pliku służą dwa operatory:

  • >nadpisuje plik (jeśli istnieje),
  • >>dopisywuje na końcu pliku.

Możesz też przekierować dane wejściowe z pliku do polecenia operatorem <.

Potoki: |

Potoki pozwalają łączyć polecenia w łańcuch, gdzie wynik jednego polecenia staje się wejściem dla kolejnego. Potoki są reprezentowane przez symbol pionowej kreski |.

Przykład: możesz wyświetlić ilość zajętej pamięci wymiany i zapisać ją do pliku:

Warunkowe wykonywanie poleceń: &&

Oprócz potoków istnieje operator &&, który uruchamia drugie polecenie tylko wtedy, gdy pierwsze zakończy się sukcesem. Jeśli pierwsze polecenie zwróci błąd, drugie się nie wykona.

Podsumowanie

W tym materiale przeszedłeś z „podstaw terminala” do praktycznej pracy na plikach i tekście, czyli tego, co w Linuksie przydaje się najczęściej, zwłaszcza przy analizie logów. W kolejnym artykule przejdziemy krok dalej i pokażę Ci, jak zarządzać użytkownikami i grupami w Linuxie.

You may also like

Leave a Comment