Jak używać polecenia grep do wyszukiwania informacji w plikach? ⋆ ALexHost SRL

Sprawdź swoje umiejętności we wszystkich naszych usługach hostingowych i otrzymaj 15% zniżki!

Użyj kodu przy kasie:

Skills
03.01.2025

Jak używać polecenia grep do wyszukiwania informacji w plikach?

Polecenie grep jest jednym z najpotężniejszych i najczęściej używanych narzędzi w systemach Unix i Linux. Umożliwia wyszukiwanie określonych wzorców lub tekstu w plikach, dzięki czemu jest niezbędnym narzędziem dla administratorów systemów, programistów i każdego, kto ma do czynienia z dużymi ilościami danych tekstowych. Niezależnie od tego, czy przeszukujesz pliki dziennika, pliki konfiguracyjne czy bazy kodu, grep może pomóc ci szybko znaleźć potrzebne informacje. W tym artykule omówimy podstawy grep i kilka zaawansowanych technik, które pomogą ci w pełni wykorzystać to wszechstronne polecenie.

Czym jest grep?

grep to skrót od “Global Regular Expression Print” Przeszukuje pliki w poszukiwaniu wierszy pasujących do danego wzorca i domyślnie wypisuje te wiersze na terminalu. grep jest szczególnie przydatny, ponieważ obsługuje wyrażenia regularne, które są wzorcami umożliwiającymi wyszukiwanie złożonych kombinacji znaków, a nie tylko dosłownego tekstu.

Podstawowa składnia

Podstawową składnią polecenia grep jest:

grep [opcje] pattern [plik...]
  • pattern: Szukany ciąg znaków lub wyrażenie regularne.
  • file: Plik lub pliki, które mają zostać przeszukane.
  • options: Opcjonalne flagi, które modyfikują zachowanie grep.

Przykład użycia

Oto prosty przykład, który wyszukuje słowo “error” w pliku o nazwie log.txt:

grep "error" log.txt

Spowoduje to wyświetlenie wszystkich wierszy w pliku log.txt zawierających słowo “error”

Najczęściej używane opcje grep

Moc grep leży w jego wszechstronności. Oto niektóre z najczęściej używanych opcji, które pomogą ci udoskonalić wyszukiwanie.

1. Wyszukiwanie w wielu plikach

Możesz przeszukiwać wiele plików jednocześnie, wymieniając je po wzorcu:

grep "error" text.txt text1.txt

Alternatywnie można użyć symboli wieloznacznych, aby przeszukać wszystkie pliki określonego typu:

grep "error" *.log

Wyszukuje “error” we wszystkich plikach .log w bieżącym katalogu.

2. Wyszukiwanie z uwzględnieniem wielkości liter (-i)

Domyślnie grep rozróżnia wielkość liter. Jeśli chcesz ignorować wielkość liter, użyj opcji -i:

grep -i "error" text.txt

Spowoduje to dopasowanie “Error”, “ERROR” lub innych odmian wielkości liter.

3. Wyszukiwanie rekursywne (-r lub -R)

Jeśli chcesz wyszukać wzorzec w plikach w katalogu i jego podkatalogach, użyj opcji -r (lub -R) do wyszukiwania rekursywnego:

grep -r "error" /var/logs/

To polecenie wyszuka słowo “error” we wszystkich plikach wewnątrz /var/logs/ i jego podkatalogów.

4. Pokaż numery linii (-n)

Opcja -n zawiera numery linii na wyjściu, co jest przydatne do szybkiego zlokalizowania dopasowanego wzorca w pliku:

grep -n "error" text.txt

Wyjście pokaże, która linia zawiera dopasowanie, jak poniżej:

25:błąd wystąpił podczas przetwarzania

5. Count Matches (-c)

Jeśli jesteś zainteresowany tylko tym, ile razy wzorzec pojawia się w pliku, użyj opcji -c, aby uzyskać liczbę dopasowań zamiast drukowania pasujących linii:

grep -c "error" text.txt

Spowoduje to wyświetlenie czegoś takiego:

Znaczenie “error” pojawiło się trzy razy w log.txt.

6. Invert Match (-v)

Aby znaleźć wiersze, które nie zawierają określonego wzorca, należy użyć opcji -v:

grep -v "error" text.txt

Spowoduje to zwrócenie wszystkich wierszy w pliku log.txt, które nie zawierają słowa “error”

7. Wyszukiwanie całych słów (-w)

Jeśli chcesz wyszukiwać całe słowa, a nie częściowe dopasowania, użyj opcji -w . Na przykład:

grep -w "error" log.txt

Zapewnia to, że “error” jest dopasowywany tylko jako całe słowo, a nie jako część innych słów, takich jak “error123” lub “myerror”

8. Ograniczenie wyjścia (-m)

Jeśli potrzebujesz tylko ograniczonej liczby dopasowań, możesz użyć opcji -m , aby określić, ile wierszy ma zostać zwróconych. Na przykład, aby uzyskać tylko 5 pierwszych dopasowań:

grep -m 5 "error" log.txt

9. Podświetlanie dopasowań (–color)

Aby ułatwić zobaczenie miejsca wystąpienia dopasowania na wyjściu, można włączyć podświetlanie kolorem za pomocą opcji –color :

grep --color "error" log.txt

W większości emulatorów terminali spowoduje to podświetlenie dopasowanego tekstu kolorem.

Używanie wyrażeń regularnych z grep

Jedną z najpotężniejszych funkcji grep jest obsługa wyrażeń regularnych (regex), które pozwalają wyszukiwać wzorce, a nie stałe ciągi znaków.

Podstawowe wyrażenia regularne

Oto kilka przykładów użycia wyrażeń regularnych z grep:

  • Wyszukiwanie wierszy zaczynających się od określonego wzorca:
    grep "^error" log.txt

    Kropka (^) odpowiada początkowi linii, więc znajdzie linie zaczynające się od “error”

  • Wyszukiwanie wierszy kończących się określonym wzorcem:
    grep "error$" log.txt

    Znak dolara ($) pasuje do końca linii, więc to znajdzie linie, które kończą się na “błąd”

  • Wyszukiwanie wierszy zawierających cyfry:
    grep "[0-9]" log.txt

    Wzorzec [0-9] pasuje do każdej cyfry, więc znajdzie linie zawierające liczby.

Rozszerzone wyrażenia regularne

Aby uzyskać bardziej zaawansowane dopasowywanie wzorców, można użyć opcji -E, która włącza rozszerzone wyrażenia regularne:

grep -E "error|failure" log.txt

Spowoduje to wyszukanie wierszy zawierających “error” lub “failure”. Symbol | reprezentuje “OR” w rozszerzonych wyrażeniach regularnych.

Inne zaawansowane wzorce obejmują:

  • * (zero lub więcej wystąpień)
  • (jedno lub więcej wystąpień)
  • . (pasuje do dowolnego pojedynczego znaku)

Na przykład, aby wyszukać wiersze zawierające dowolne słowo zaczynające się od “err” i kończące się dowolnymi znakami po nim:

grep -E "err.*" log.txt

Przeszukiwanie skompresowanych plików za pomocą zgrep

Jeśli chcesz przeszukiwać pliki skompresowane (takie jak pliki.gz ), możesz użyć polecenia zgrep, które działa jak grep, ale obsługuje pliki skompresowane:

zgrep "error" log.gz

To polecenie wyszuka “error” wewnątrz pliku log. gz bez konieczności ręcznej dekompresji pliku.

Łączenie grep z innymi poleceniami

Możesz łączyć grep z innymi poleceniami za pomocą potoków (|), aby tworzyć potężne przepływy wyszukiwania. Na przykład:

  • Wyszukiwanie w danych wyjściowych innego polecenia: Jeśli chcesz wyszukać procesy zawierające słowo “bash”, możesz użyć:
    ps aux | grep "bash"
  • Wyszukiwanie w pliku dziennika i zliczanie unikalnych dopasowań:
    grep "error" log.txt | sort | uniq -c

    Spowoduje to posortowanie danych wyjściowych pasujących wierszy i zliczenie unikalnych wystąpień.

Wniosek

Polecenie grep jest niezwykle potężnym narzędziem, które może pomóc w szybkim i wydajnym wyszukiwaniu tekstu i wzorców w plikach. Niezależnie od tego, czy analizujesz logi, filtrujesz dane, czy przeszukujesz kod, opanowanie grep pozwoli ci zaoszczędzić czas i wysiłek. Dzięki opcjom wyszukiwania bez uwzględniania wielkości liter, wyrażeń regularnych i rekurencyjnego przeszukiwania katalogów, grep jest wystarczająco wszechstronny, aby poradzić sobie z prawie każdym zadaniem wyszukiwania tekstu.

Łącząc grep z innymi poleceniami i wykorzystując jego wiele opcji, można tworzyć złożone i wydajne zapytania wyszukiwania, co czyni go niezbędnym narzędziem w każdym systemie Linux lub Unix.

Sprawdź swoje umiejętności we wszystkich naszych usługach hostingowych i otrzymaj 15% zniżki!

Użyj kodu przy kasie:

Skills