Szukanie, filtrowanie i przekierowywanie danych w Bashu

Wprowadzenie

Terminal to nie tylko narzędzie do poruszania się po systemie i zarządzania plikami. Bash daje Ci możliwość przetwarzania danych w locie, bez otwierania programów graficznych.

W tej lekcji nauczysz się:

  • jak wyszukiwać tekst w plikach,
  • jak działa system strumieni Bash (standardowe wejście/wyjście/błędy),
  • oraz jak wyświetlać wybrane fragmenty plików.

To bardzo ważne narzędzia, które pozwolą Ci pracować szybciej i efektywniej.


1. Polecenie grep – wyszukiwanie wzorców w plikach

grep to jedno z najczęściej używanych narzędzi w Linuksie. Pozwala wyszukiwać linie zawierające określony tekst lub wzorzec (również regexy).

Podstawowe użycie:

grep "tekst" plik.txt

Znajduje wszystkie linie w pliku, które zawierają słowo „tekst”.


Najważniejsze opcje grep

1. -i – ignoruj wielkość liter

grep -i "linux" opis.txt

Znalezione zostaną linie zawierające: Linux, linux, LiNuX…

2. -n – pokaż numery linii

grep -n "Ubuntu" systemy.txt

3. -r – wyszukiwanie rekurencyjne w katalogach

grep -r "error" /var/log

4. -v – odwrócenie wyszukiwania

Pokazuje linie niepasujące do wzorca.

grep -v "test" dane.txt

5. -E – wyszukiwanie z wyrażeniami regularnymi (regex)

grep -E "plik[0-9]+" lista.txt

Przykłady użycia grep

  1. Znajdź linie zawierające nazwę użytkownika:
grep "$USER" /etc/passwd
  1. Wyświetl linie zawierające „error” w logach:
grep -r "error" .
  1. Szukaj linijek niezawierających słowa „INFO”:
grep -v "INFO" log.txt

2. Przekierowywanie strumieni w Bashu

Każde polecenie w Bashu pracuje na trzech strumieniach:

  • 0 – stdin (standardowe wejście),
  • 1 – stdout (standardowe wyjście),
  • 2 – stderr (standardowe błędy).

Możesz przekierowywać te strumienie do plików lub innych poleceń.


1. Zapis wyjścia do pliku – „>”

ls > pliki.txt

Nadpisuje plik pliki.txt, wpisując do niego wynik komendy.


2. Dopisywanie do pliku – „>>”

date >> log.txt

Dopisuje linię z datą na końcu pliku.


3. Przekierowywanie wejścia – „<”

cat < plik.txt

Rzadziej używane, ale działa jak:

cat plik.txt

4. Przekierowanie błędów – „2>”

ls nieistnieje 2> bledy.txt

Zapisuje komunikaty błędów do pliku bledy.txt.


5. Przekierowanie wszystkiego – „&>”

polecenie &> wynik.txt

Umieszcza w pliku oba strumienie: wyjście i błędy.


6. Potoki – „|”

Potok przekazuje wynik jednego polecenia jako wejście drugiego.

Przykład:

ls | grep ".txt"

Znajduje wszystkie pliki .txt w bieżącym katalogu.

Inne przykłady:

ps aux | grep firefox
dmesg | grep -i error
history | grep sudo

3. head i tail – szybki podgląd plików

head – pierwsze linie pliku

head plik.txt

Domyślnie pokazuje pierwsze 10 linii.

Możesz zmienić liczbę:

head -n 20 plik.txt

tail – ostatnie linie pliku

tail plik.txt

Również domyślnie 10 ostatnich linii.

Zmiana liczby:

tail -n 50 log.txt

tail -f – śledzenie zmian w czasie rzeczywistym

Świetne do obserwowania logów:

tail -f /var/log/syslog

Program będzie pokazywał nowe linie pojawiające się w pliku.

Aby przerwać: Ctrl + C


4. Przykłady praktyczne (łączenie narzędzi)

  1. Znajdź błędy w logach:
grep -i error /var/log/syslog
  1. Pokaż pierwsze linie wyników wyszukiwania:
grep -i error /var/log/syslog | head
  1. Pokaż ostatnie 20 wyników logów nie zawierających słowa „INFO”:
grep -v "INFO" log.txt | tail -n 20
  1. Zapisz linie z hasłem „user” do pliku:
grep "user" baza.txt > znalezione.txt
  1. Dopisz wyniki wyszukiwania do istniejącego pliku:
grep -r "config" /etc >> raport.txt

5. Ćwiczenia praktyczne (6 zadań)

Ćwiczenie 1 – Podstawy grep

W pliku dane.txt:

  1. Znajdź wszystkie linie zawierające słowo „Ubuntu”.
  2. Znajdź linie zawierające słowo „linux”, ignorując wielkość liter.
  3. Znajdź numery linii ze słowem „root”.

Ćwiczenie 2 – Praca z potokami

  1. Wyświetl wszystkie procesy zawierające słowo „bash”.
  2. Przefiltruj je przez grep -v, aby ukryć linie zawierające grep.
  3. Połącz wynik z head, aby zobaczyć tylko pierwsze 3 linie.

Ćwiczenie 3 – Przekierowania plików

  1. Przekieruj wynik polecenia ls do pliku lista.txt.
  2. Dopisz datę do tego pliku.
  3. Przekieruj błędy z polecenia ls nie_ma_takiego do pliku blad.txt.

Ćwiczenie 4 – head i tail

  1. Wyświetl pierwsze 5 linii pliku /etc/passwd.
  2. Wyświetl ostatnie 8 linii tego samego pliku.
  3. Użyj tail -f, aby obserwować plik /var/log/syslog przez kilka sekund.

Ćwiczenie 5 – Wyszukiwanie w katalogach

  1. Znajdź wszystkie pliki w bieżącym katalogu zawierające słowo „test”.
  2. Znajdź wszystkie pliki w całym katalogu domowym zawierające słowo „bash”.
  3. Wynik zapisz do pliku wyniki.txt.

Ćwiczenie 6 – Łączenie technik

Połącz narzędzia w jednym poleceniu:

  1. Znajdź linie w /var/log/syslog zawierające network.
  2. Przekieruj wynik do grep -v error (usuń błędy).
  3. Wyświetl tylko pierwsze 10 wyników.
  4. Zapisz te wyniki do pliku raport_network.txt.

Podsumowanie

W tej lekcji nauczyłeś się trzech fundamentów pracy w terminalu:

  • grep – potężne narzędzie do wyszukiwania,
  • przekierowania – kontrolowanie przepływu danych,
  • head/tail – szybki podgląd fragmentów plików.

To jedne z najczęściej używanych narzędzi w Bashu. Ich opanowanie pozwoli Ci analizować logi, pracować z dużą liczbą plików i automatyzować pracę.