Zrozumienie GREP w systemie Linux: Użycie i aplikacje
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.txt
za pomocą następującego polecenia:
Możesz również wyszukiwać konkretne słowa w plikach tekstowych:
Co więcej, Grep można łączyć z potokami UNIX w celu ujednolicenia wielu poleceń w jedną operację:
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 ls
bezpośrednio do Grepa.
Na przykład to polecenie wyświetli wszystkie pliki JPEG w katalogu Pobrane, podświetlając ich rozszerzenia:
Możesz rozszerzyć ls
wyjś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:
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.
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 -i
flagą sparowaną z terminem wyszukiwania:
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”:
Warto zauważyć, że użycie -r
flagi zmusza Grep do sprawdzenia wszystkich plików w podanym katalogu, co może obejmować pliki nietekstowe. Aby uniknąć tej sytuacji, użyj -I
ró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 -r
i -l
, podając ciąg docelowy i katalog, w którym chcesz przeszukać:
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”:
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 -v
flagi 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”:
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 -w
flagą, po której wpiszesz żądane słowo:
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 -x
flaga, co czyni ją szczególnie przydatną do lokalizowania fraz lub dokładnych wierszy w plikach konfiguracyjnych.
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 -n
flagą wraz z terminem wyszukiwania:
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:
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 -E
flagę umożliwiającą parsowanie Extended Regular Expressions (ERE). Na przykład poniższe polecenie wymaga -E
flagi:
Dodatkowo Grep ma specjalny tryb, który całkowicie eliminuje funkcjonalności regex. Aby go aktywować, uruchom polecenie z -F
flagą, po której następuje prosty ciąg:
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 -C
flagą 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:
Możesz również dostosować wyniki, selektywnie drukując tylko poprzednie lub następne wiersze za pomocą flag -B
i -A
. Na przykład poniższe polecenie wyświetli dziesięć wierszy, które znajdują się po Twoim wyszukiwanym terminie:
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.
Dodaj komentarz