grep

Linux egrep Polecenie z przykładami

Linux egrep Polecenie z przykładami
Polecenie egrep należy do rodziny poleceń grep, które są używane do wyszukiwania wzorców w systemie Linux. Jeśli użyłeś polecenia grep, egrep działa tak samo, jak grep -E (grep Extended regex'). Egrep skanuje określony plik wiersz po wierszu i drukuje wiersze zawierające wyszukiwany ciąg/wyrażenie regularne. W tym artykule wyjaśnimy 15 przydatnych przykładów poleceń egrep, które pomogą nowicjuszom, a nawet ekspertom w przeprowadzaniu sensownych wyszukiwań w systemie Linux. Przeprowadziliśmy te przykłady w systemie Debian 10 Buster, ale można je łatwo replikować w większości dystrybucji Linuksa.

Przykład 1: Wyszukiwanie określonego ciągu w pliku

Jest to najczęstsze użycie polecenia egrep. To, co robisz, to określasz ciąg, który chcesz wyszukać, oraz nazwę pliku, w którym chcesz wyszukać ten ciąg. Wynik wyświetla następnie całą linię zawierającą wyszukiwany ciąg.

Składnia:

$ egrep nazwa pliku „ciąg_wyszukiwania”

Przykład:

$ przykładowy plik egrep Debiana.tekst

W tym przykładzie szukałem słowa „debian” w podanym pliku tekstowym. Możesz zobaczyć, jak wyniki wyświetlają całą linię zawierającą słowo „debian”:

Przykład 2: Wyszukiwanie określonego ciągu w wielu plikach

Za pomocą polecenia egrep możesz wyszukiwać ciąg znaków wśród wielu plików znajdujących się w tym samym katalogu. Trzeba tylko trochę bardziej szczegółowo podać „wzór” dla przeszukiwanych plików. Stanie się to bardziej zrozumiałe na przykładzie, który przedstawimy.

Składnia:

$ egrep "ciąg_wyszukiwania" wzorzec_nazwy_pliku

Przykład:

Tutaj będziemy szukać słowa „debian” we wszystkich .txt, określając wzorzec nazwy pliku w następujący sposób:

$ egrep „debian” *.tekst

Polecenie wydrukowało wszystkie wiersze, wraz z nazwami plików, które zawierają słowo „debian” ze wszystkich .pliki txt w bieżącym katalogu.

Przykład 3: Rekurencyjne przeszukiwanie łańcucha w całym katalogu

Jeśli chcesz wyszukać ciąg we wszystkich plikach z katalogu i jego podkatalogów, możesz to zrobić, używając flagi -r z poleceniem egrep.

Składnia:

$ egrep -r "ciąg_wyszukiwania" *

Przykład:

W tym przykładzie szukam słowa „sample” w plikach całego katalogu bieżącego (Downloads).

$ egrep -r "próbka" *

Wyniki zawierają wszystkie wiersze, wraz z nazwami plików, które zawierają słowo „próbka” ze wszystkich plików w katalogu Pobrane i jego podkatalogach.

Przykład 4: Wykonywanie wyszukiwania bez rozróżniania wielkości liter

Z flagą -i możesz użyć polecenia egrep, aby wydrukować wyniki na podstawie szukanego ciągu bez martwienia się o wielkość liter.

Składnia:

$ egrep -i nazwa pliku „ciąg_wyszukiwania”

Przykład:

Tutaj szukam słowa „debian” i chcę, aby wyniki wyświetlały wszystkie wiersze z pliku, które zawierają słowo „debian” lub „Debian”, niezależnie od wielkości liter.

$ egrep -i nazwa pliku „ciąg_wyszukiwania”

Możesz zobaczyć, jak flaga -i pomogła mi w pobraniu wszystkich wierszy zawierających wyszukiwany ciąg przez wyszukiwanie „niewrażliwe na wielkość liter”.

Przykład 5: Wyszukiwanie ciągu jako pełnego słowa, a nie jako podciągu

Kiedy zwykle szukasz ciągu przez egrep, wypisuje wszystkie słowa, które zawierają ciąg jako podciąg. Na przykład wyszukanie ciągu „on” spowoduje wydrukowanie wszystkich słów zawierających ciąg „on”, takich jak „on”, „only”, „monitor”, „clone” itp. Jeśli chcesz, aby wyniki wyświetlały tylko słowo „on” jako pełne słowo, a nie jako podciąg, możesz użyć flagi -w z egrep.

Składnia:

$ egrep -w nazwa pliku „ciąg_wyszukiwania”

Przykład:

Tutaj szukam ciągu „on” w przykładowym pliku:

$ egrep -i “on” przykładowy plik.tekst

Jak widać na powyższym wyjściu, zawiera on również słowo „tylko”. Jednak nie o to mi chodzi, ponieważ szukam wyłącznie słowa „na”. Oto polecenie, którego użyję zamiast tego:

$ egrep -iw “on” przykładowy plik.tekst

Teraz moje wyniki wyszukiwania zawierają tylko wiersze zawierające słowo „on” jako całe słowo.

Przykład 6: Drukowanie tylko nazw plików zawierających łańcuch

Czasami chcemy pobrać tylko nazwy plików, które zawierają określony ciąg, zamiast drukować wiersze, które go zawierają. Można to zrobić za pomocą flagi -l (małe litery L) z poleceniem egrep.

Składnia:

$ egrep -l "ciąg_wyszukiwania" wzorzec_nazwy_pliku

Przykład:

Tutaj szukam ciągu „próbka” we wszystkich .pliki txt w bieżącym katalogu:

$ egrep -l próbka *.tekst

Wyniki wyszukiwania wyświetlają tylko nazwy plików zawierających określony ciąg.

Przykład 7: Drukowanie tylko ciągu wyszukiwania z pliku

Zamiast drukować cały wiersz zawierający wyszukiwany ciąg, możesz użyć polecenia egrep, aby wyświetlić sam ciąg. Ciąg zostanie wydrukowany tyle razy, ile pojawi się w określonym pliku.

Składnia:

$ egrep -o nazwa pliku "ciąg_wyszukiwania"

Przykład:

W tym przykładzie szukam słowa „To” w moim pliku.

$ egrep -o Ten przykładowy plik_.tekst

Uwaga: To użycie polecenia jest przydatne, gdy szukasz ciągu opartego na wzorcu wyrażenia regularnego. Wyrażenia regularne wyjaśnimy szczegółowo w jednym z kolejnych przykładów.

Przykład 8: Wyświetlanie n liczby wierszy przed, po lub wokół szukanego ciągu

Czasami bardzo ważna jest znajomość kontekstu w pliku, w którym używany jest określony ciąg. Egrep jest przydatny w tym sensie, że można go użyć do wyświetlenia wiersza zawierającego wyszukiwany ciąg, a także określonej liczby wierszy przed, po i wokół niego.

Oto przykładowy plik tekstowy, którego użyję do wyjaśnienia nadchodzących przykładów:

N liczba wierszy Po wyszukiwanym ciągu:

Użycie flagi A w następujący sposób spowoduje wyświetlenie linii zawierającej szukany ciąg i liczbę N linii po nim:

$ egrep -A nazwa pliku „ciąg_wyszukiwania”

Przykład:

$ egrep -Przykładowy plik 2 "przykładowy".tekst

N liczba wierszy Przed szukanym ciągiem:

Użycie flagi B w następujący sposób spowoduje wyświetlenie wiersza zawierającego szukany ciąg i liczbę N wierszy przed nim:

$ egrep -B nazwa pliku „ciąg_wyszukiwania”

Przykład:

$ egrep -B 2 "przykładowy" przykładowy plik.tekst

N liczba wierszy Przed szukanym ciągiem:

Użycie flagi C w następujący sposób spowoduje wyświetlenie wiersza zawierającego szukany ciąg oraz liczbę N wierszy przed i po nim:

$ egrep -C nazwa pliku „ciąg_wyszukiwania”

Przykład:

$ egrep -C 2 "przykładowy" przykładowy plik.tekst

Przykład 9: Dopasowywanie wyrażenia regularnego w plikach

Polecenie egrep staje się potężniejsze, gdy szukasz wyrażeń regularnych zamiast pełnych ciągów wyszukiwania w pliku.

Składnia:

$ egrep Nazwa pliku "Wyrażenia regularne"

Pozwól nam wyjaśnić, w jaki sposób możesz używać wyrażeń regularnych w wyszukiwaniu egrep:

Operator powtórzeń Posługiwać się
? Poprzedni element przed ? jest opcjonalny i jest dopasowywany maksymalnie jeden raz

* Poprzedni element przed * zostanie dopasowany zero lub więcej razy
+ Poprzedni element przed + zostanie dopasowany raz lub więcej razy
n Poprzedni element jest dokładnie dopasowany n razy.
n, Poprzedni element jest dopasowywany n lub więcej razy
m. Poprzedni element jest dopasowywany maksymalnie m razy
n,m Poprzedni element jest dopasowany co najmniej n razy, ale nie więcej niż m razy

Przykład:

W poniższym przykładzie dopasowywane są wiersze zawierające następujące wyrażenie:

zaczynając od „Gnome” i kończąc na „ programy”

Przykład 10: Podświetlanie szukanego ciągu

Gdy ustawisz zmienną środowiskową GREP_OPTIONS jak poniżej, otrzymasz wynik z ciągiem/wzorem wyszukiwania podświetlonym w wynikach:

$ sudo export GREP_OPTIONS='--color=auto' GREP_COLOR='100;8'

Następnie możesz wyszukać ciąg w dowolny sposób, który opisaliśmy w przykładach tego artykułu.

Przykład 11: Wykonywanie wyszukiwania odwróconego w pliku

Przez wyszukiwanie odwrócone rozumiemy, że polecenie egrep drukuje wszystko w pliku, z wyjątkiem wierszy zawierających ciąg wyszukiwania. Użyjemy następującego przykładowego pliku, aby wyjaśnić wyszukiwanie odwrócone przez egrep. Wydrukowaliśmy zawartość pliku za pomocą polecenia cat:

Składnia:

$ egrep -v nazwa pliku „ciąg_wyszukiwania”

Przykład:

Z przykładowego pliku, o którym wspomnieliśmy, chcemy pominąć wiersz zawierający słowo „dwa” w wyjściu, dlatego użyjemy następującego polecenia:

$ egrep -v "dwa" przykładowy plik_.tekst

Możesz zobaczyć, jak dane wyjściowe zawierają wszystko z przykładowego pliku z wyjątkiem drugiego wiersza, który zawierał ciąg wyszukiwania „dwa”.

Przykład 12: Wykonywanie wyszukiwania odwróconego na podstawie wielu kryteriów/wzorca wyszukiwania

Za pomocą flagi -v możesz również sprawić, by polecenie egrep wykonało wyszukiwanie odwrotne na podstawie więcej niż jednego ciągu/wzorca wyszukiwania.

Aby wyjaśnić ten scenariusz, użyjemy tego samego przykładowego pliku, o którym wspomnieliśmy w przykładzie 11.

Składnia:

$ egrep -v -e "ciąg_szukaj"/"wzorzec" -e "ciąg_szukaj"/"wzór"
… Nazwa pliku

Przykład:

Z przykładowego pliku, o którym wspomnieliśmy, chcemy pominąć wiersze zawierające słowa „jeden” i „dwa” w danych wyjściowych, dlatego użyjemy następującego polecenia:

$ egrep -v -e „jeden” -e „dwa” plik przykładowy_.tekst

Dodaliśmy dwa słowa do pominięcia za pomocą flagi -e, dlatego wynik będzie wyglądał następująco:

Przykład 13: Drukowanie liczby wierszy pasujących do szukanego ciągu

Zamiast drukować szukany ciąg z pliku lub wierszy go zawierających, możesz użyć polecenia egrep do zliczenia i wydrukowania liczby wierszy dopasowanych do ciągu. Ten licznik można pobrać za pomocą flagi -c z poleceniem egrep.

Składnia:

$ egrep -c nazwa pliku „ciąg_wyszukiwania”

Przykład:

W tym przykładzie użyjemy flagi -c, aby zliczyć liczbę wierszy zawierających słowo „This” w naszym przykładowym pliku:

$ egrep -c „Ten” plik

Możesz również użyć funkcji wyszukiwania odwróconego, aby policzyć i wydrukować liczbę wierszy, które nie zawierają ciągu wyszukiwania: 

$ grep -v -c Nazwa pliku „ciąg_wyszukiwania”

Przykład 14: Wyświetlanie numeru linii, w której ciąg jest dopasowany

Za pomocą flagi -n możesz sprawić, że polecenie egrep wyświetli dopasowany wiersz wraz z numerem wiersza, który zawiera szukany ciąg.

Składnia:

$ grep -n nazwa pliku „ciąg_wyszukiwania”

Przykład:

$ grep -n „Ten” przykładowy plik_.tekst

Możesz zobaczyć, jak numery linii są wyświetlane w wynikach wyszukiwania.

Przykład 15: Wyświetlanie pozycji w pliku, w której pasuje wyszukiwany ciąg

Jeśli chcesz poznać pozycję w pliku, w której istnieje wyszukiwany ciąg, możesz użyć flagi -b z poleceniem egrep.

$ grep -o -b Nazwa pliku „ciąg_wyszukiwania”

Przykład:

$ grep -o -b "Ten" przykładowy plik_.tekst

Wyniki wyszukiwania wyświetlają przesunięcie bajtów pliku, w którym istnieje wyszukiwane słowo.To było szczegółowe użycie polecenia egrep. Korzystając z kombinacji flag opisanych w tym artykule, możesz przeprowadzać bardziej sensowne i złożone wyszukiwania w swoich plikach.

Gry How to Show FPS Counter in Linux Games
How to Show FPS Counter in Linux Games
Linux gaming got a major push when Valve announced Linux support for Steam client and their games in 2012. Since then, many AAA and indie games have m...
Gry How to download and Play Sid Meier's Civilization VI on Linux
How to download and Play Sid Meier's Civilization VI on Linux
Introduction to the game Civilization 6 is a modern take on the classic concept introduced in the series of the Age of Empires games. The idea was fai...
Gry How to Install and Play Doom on Linux
How to Install and Play Doom on Linux
Introduction to Doom The Doom Series originated in the 90s after the release of the original Doom. It was an instant hit and from that time onwards th...