Zrozumienie GREP w systemie Linux: Użycie i aplikacje

Zrozumienie GREP w systemie Linux: Użycie i aplikacje
Osoba korzystająca z laptopa.

Grep to kompaktowe narzędzie UNIX przeznaczone do wyszukiwania wzorców. Pierwotnie wprowadzone w V6 UNIX, stało się podstawą w różnych systemach operacyjnych typu UNIX, w tym Linux, macOS i wariantach BSD. W tym artykule przyjrzymy się podstawowym cechom Grep i podamy praktyczne przykłady jego zastosowania w codziennych zadaniach.

Zrozumienie podstaw Grep

Podstawowa funkcja Grepa jest prosta: przetwarza dane wejściowe, aby identyfikować i wyświetlać pasujące wzorce tekstowe. To narzędzie może badać niemal każde źródło zwykłego tekstu, umożliwiając mu skanowanie plików bezpośrednio lub pracę z wynikami z innych poleceń.

Aby zacząć używać Grepa, jednym z najprostszych poleceń jest odczyt z pliku tekstowego. Na przykład możesz wyświetlić zawartość sample.txtza pomocą następującego polecenia:

Możesz również wyszukiwać konkretne słowa w plikach tekstowych:

Wyszukiwanie słów w terminalu za pomocą polecenia Grep.

Co więcej, Grep można łączyć z potokami UNIX w celu ujednolicenia wielu poleceń w jedną operację:

Użycie polecenia Grep do wydrukowania całego pliku bez argumentów.

Aby dowiedzieć się więcej na temat działania pagerów w systemie Linux, zapoznaj się z naszą ściągą na temat GNU less.

Wyszukiwanie plików w katalogu

Jednym z praktycznych zastosowań Grepa jest lokalizowanie plików w katalogu. Możesz przekazać wyjście polecenia lsbezpośrednio do Grepa.

Na przykład to polecenie wyświetli wszystkie pliki JPEG w katalogu Pobrane, podświetlając ich rozszerzenia:

Filtrowanie listy plików według rozszerzenia pliku za pomocą polecenia Grep.

Możesz rozszerzyć lswyjście i wykonać bardziej skomplikowane dopasowywanie wzorców. Na przykład poniższe polecenie wyświetla wszystkie pliki w bieżącym katalogu, które są mniejsze niż 1 MB:

Możliwość dopasowywania tekstu przez Grepa w większych formatach.

Ignorowanie wielkości liter

Domyślnie większość narzędzi typu UNIX jest wrażliwa na rozróżnianie wielkości liter. Oznacza to, że ciągi „Hello,””hello,””hEllo,”i „helLo” są interpretowane jako odrębne wpisy.

Domyślnie Grep rozróżnia wielkość liter.

Może to komplikować wyszukiwanie tekstu, zwłaszcza gdy występują różne przypadki słowa. Aby temu zaradzić, możesz użyć Grep z -iflagą sparowaną z terminem wyszukiwania:

Flaga -i w programie Grep wyłącza rozróżnianie wielkości liter.

Przeszukiwanie rekurencyjne

Grep ma możliwość przeszukiwania wielu plików lub całych katalogów jednocześnie. Jest to szczególnie przydatne podczas badania projektu z różnymi plikami i chcesz znaleźć wystąpienia określonego tekstu w całym katalogu. Na przykład użyj następującego polecenia, aby zlokalizować termin „MakeTechEasier” w katalogu „sample”:

Rekurencyjna funkcjonalność polecenia Grep przeszukująca wiele plików.

Warto zauważyć, że użycie -rflagi zmusza Grep do sprawdzenia wszystkich plików w podanym katalogu, co może obejmować pliki nietekstowe. Aby uniknąć tej sytuacji, użyj -Irównież flagi:

Identyfikowanie plików za pomocą określonych ciągów znaków

Poza wyświetlaniem miejsca, w którym ciąg pojawia się w plikach, Grep może generować listę plików, które zawierają tekst, którego szukasz. Jest to pomocne, gdy chcesz sprawdzić, czy plik ma określoną zawartość bez wyświetlania każdego znalezionego wystąpienia.

Aby to osiągnąć, użyj polecenia Grep z następującymi flagami -ri -l, podając ciąg docelowy i katalog, w którym chcesz przeszukać:

Grep wyświetla ścieżki plików zawierające dopasowaną zawartość.

Dodatkowo możesz umieścić polecenie Grep w podpowłoce Bash, aby wymusić wiele warunków wyszukiwania. Na przykład poniższe polecenie zwróci pliki zawierające zarówno „Hello”, jak i „MakeTechEasier” w katalogu „sample”:

Korzystanie z podpowłok Bash z poleceniem Grep do dopasowywania wielowarunkowego.

Ujawnianie niezgodnych wyników

Oprócz standardowych wyszukiwań, Grep może również dawać wyniki, które wykluczają określone kryteria. Ta funkcjonalność może być bardzo przydatna, gdy trzeba wykryć błędy lub nieprawidłowości w danych tekstowych.

Aby to wykonać, użyj -vflagi w połączeniu z preferowanymi opcjami. Na przykład poniższe polecenie rekurencyjnie skanuje wszystkie pliki w katalogu „/etc/nginx” i zwraca wszystkie wiersze, które nie zawierają ciągu „nginx”:

Użycie flagi invert w celu dopasowania wszystkiego oprócz określonego ciągu.

Wyszukiwanie słów i wierszy

Może być również korzystne poinstruowanie Grepa, aby wyszukiwał całe słowa lub całe wiersze, a nie dowolny ciąg znaków pasujący do określonego wzorca. To podejście jest szczególnie przydatne, gdy celem jest sekwencja znaków, która jest powszechna w różnych słowach. Na przykład wyszukiwanie terminu „it” może dać wiele fałszywych wyników dodatnich, ponieważ występuje on w wielu innych słowach.

Aby rozwiązać ten problem, uruchom Grepa z -wflagą, po której wpiszesz żądane słowo:

Wykonywanie dopasowywania całych słów za pomocą Grepa.

Zamiast zwracać wszystkie wystąpienia zawierające wzorzec wyszukiwania, Grep wyprowadza tylko samo słowo. Dotyczy to również całych wierszy, gdy używana jest -xflaga, co czyni ją szczególnie przydatną do lokalizowania fraz lub dokładnych wierszy w plikach konfiguracyjnych.

Grep dopasowuje całe wiersze tekstu.

Uwzględnianie numerów wierszy w wynikach Grep

Numery wierszy odgrywają kluczową rolę w debugowaniu kodu i przeglądaniu dokumentów. Uproszczają proces określania lokalizacji konkretnego wiersza lub funkcji, znacznie przyspieszając rewizje.

Grep oferuje funkcjonalność dołączenia numerów wierszy do swojego wyjścia. Możesz to aktywować, uruchamiając polecenie z -nflagą wraz z terminem wyszukiwania:

Grep wyświetla numery wierszy dla dopasowań w pliku.

W połączeniu z potokami UNIX możesz udoskonalić wyjście Grepa, aby wyświetlało tylko numery wierszy wyników wyszukiwania. To podejście jest szczególnie przydatne do przetwarzania dużych ilości tekstu:

Wykorzystanie potoków UNIX z poleceniem Grep do udoskonalonego przetwarzania danych wyjściowych.

Stosowanie rozszerzonego wyrażenia regularnego z poleceniem Grep

Grep wykorzystuje Basic Regular Expressions (BRE) jako swoje podstawowe metaznaki do dopasowywania tekstu. Chociaż jest to funkcjonalne dla różnych zadań, użytkownicy mogą uznać to za ograniczające, szczególnie podczas badania grup wzorców.

Aby rozszerzyć możliwości, wiele implementacji Grep zawiera -Eflagę umożliwiającą parsowanie Extended Regular Expressions (ERE). Na przykład poniższe polecenie wymaga -Eflagi:

Użycie rozszerzonego wyrażenia regularnego z wyrażeniem Grep do dopasowywania wzorców.

Dodatkowo Grep ma specjalny tryb, który całkowicie eliminuje funkcjonalności regex. Aby go aktywować, uruchom polecenie z -Fflagą, po której następuje prosty ciąg:

Dokładne dopasowanie ciągu znaków bez wyrażeń regularnych w programie Grep.

Dołączanie otaczających linii do wyników Grep

Siła Grepa polega na ujawnianiu, gdzie tekst pojawia się w danych wejściowych lub plikach. Jednak samo wyświetlanie dokładnej lokalizacji może nie wystarczyć podczas rozwiązywania problemów. Kontekst otaczający ciąg, taki jak ten znaleziony w dziennikach awarii, może często dostarczyć istotnych spostrzeżeń.

Aby wydrukować dodatkowy kontekst, możesz uruchomić Grep z -Cflagą połączoną z liczbą wierszy, które chcesz wyświetlić przed i po wynikach wyszukiwania. Na przykład, aby wyświetlić pięć wierszy wokół ciągu docelowego, użyj następującego polecenia:

Grep wyświetla kontekst otoczenia dla dopasowanego ciągu.

Możesz również dostosować wyniki, selektywnie drukując tylko poprzednie lub następne wiersze za pomocą flag -Bi -A. Na przykład poniższe polecenie wyświetli dziesięć wierszy, które znajdują się po Twoim wyszukiwanym terminie:

Grep drukuje wiersze następujące po dopasowanym ciągu.

Teraz, gdy posiadasz podstawową wiedzę na temat Grepa i wiesz, jak go wykorzystywać do typowych zadań, jesteś gotowy, aby zagłębić się w wiersz poleceń i szerszy ekosystem UNIX. Poznaj go dalej, ucząc się, jak używać sed w Linuksie, aby uzyskać jeszcze wydajniejsze przetwarzanie tekstu.

Źródło obrazu: Alejandro Escamilla przez Unsplash . Wszystkie modyfikacje i zrzuty ekranu autorstwa Ramces Red.

Źródło

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *