Polecenie Linux Egrep z przykładami

Polecenie Linux Egrep z przykładami
Polecenie Egrep należy do rodziny polecenia GREP, która jest używana do wyszukiwania wzoru w 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 do linii i drukuje wiersze, które zawierają ciąg wyszukiwania/wyrażenie regularne. W tym artykule wyjaśnimy 15 przydatnych przykładów poleceń EGREP, które pomogą nowicjuszom, a nawet ekspertom w przeprowadzeniu znaczących wyszukiwania w Linuxwe przeprowadziły te przykłady w systemie debian 10 Buster, ale można je łatwo odtworzyć w większości dystrybucji Linux.

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

Jest to najczęstsze zastosowanie polecenia EGREP. To, co robisz, polega na tym, że określasz ciąg, który chcesz wyszukać, oraz nazwę pliku, w której chcesz wyszukać ten ciąg. Wynik wyświetla całą linię zawierającą wyszukiwany ciąg.

Składnia:

$ egrep „Search_string” nazwa pliku

Przykład:

$ egrep debian próbka.tekst

W tym przykładzie szukałem słowa „debian” w określonym 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 wyszukać ciąg wśród wielu plików przebywających w tym samym katalogu. Musisz być trochę bardziej szczegółowy w dostarczaniu „wzoru” dla wyszukiwanych plików. Stanie się to bardziej jasne z przykładem, który przedstawimy.

Składnia:

$ egrep „Search_string” nazwa pliku_pattern

Przykład:

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

$ egrep „debian” *.tekst

Polecenie wydrukowało wszystkie wiersze wraz z nazwami plików zawierającymi słowo „debian” ze wszystkich .Pliki TXT w bieżącym katalogu.

Przykład 3: Rekurencyjnie wyszukiwanie łańcucha w całym katalogu

Kiedy chcesz wyszukać ciąg w wszystkich plikach z katalogu i jego podwodnych, możesz to zrobić za pomocą flagi -r z poleceniem Egrep.

Składnia:

$ egrep -r „Search_string” *

Przykład:

W tym przykładzie szukam słowa „próbka” w plikach całego katalogu bieżącego (pobierania).

$ 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 pobierania i jego podrzędne.

Przykład 4: Wykonanie wyszukiwania wrażliwych na sprawę

Za pomocą flagi -i możesz użyć polecenia EGREP, aby wydrukować wyniki na podstawie ciągu wyszukiwania bez martwienia.

Składnia:

$ egrep -i „Search_string” nazwa pliku

Przykład:

Tutaj szukam słowa „debian” i chcę, aby wyniki wyświetlały wszystkie wiersze z pliku zawierające słowo „debian” lub „debian, niezależnie od jego przypadku.

$ egrep -i „Search_string” nazwa pliku

Możesz zobaczyć, w jaki sposób -i flaga pomogła mi przynieść wszystkie wiersze zawierające ciąg wyszukiwania za pomocą „niewrażliwego” wyszukiwania.

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

Kiedy normalnie szukasz ciągu za pośrednictwem EGREP, drukuje wszystkie słowa zawierające łańcuch jako substrowanie. Na przykład szukanie ciągu „ON” wydrukuje wszystkie słowa zawierające ciąg „ON”, jak „ON”, „Only”, „Monitor”, „Klon” itp. Jeśli chcesz, aby wyniki wyświetlały tylko słowo „włączone” jako pełne słowo, a nie jako sub -string, możesz użyć flagi -w z egrep.

Składnia:

$ egrep -w nazwa pliku „Search_string”

Przykład:

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

$ egrep -i „on” próbki.tekst

Możesz zobaczyć na powyższym wyjściu, że zawiera on również słowo „tylko”. Jednak nie tego chcę, ponieważ szukam wyłącznie słowa „włącz”. To jest polecenie, którego użyję zamiast tego:

$ egrep -iw „on” próbki.tekst

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

Przykład 6: Drukowanie tylko nazw plików zawierających ciąg

Czasami chcemy tylko pobrać nazwy plików zawierające określony ciąg, zamiast drukować zawierające go wiersze. Można to zrobić za pomocą flagi -L (małej litery L) za pomocą polecenia EGREP.

Składnia:

$ egrep -l „Search_string” nazwa pliku_pattern

Przykład:

Tutaj szukam „próbki” ciągu we wszystkich .Pliki TXT w bieżącym katalogu:

$ egrep -l próbka *.tekst

Wyniki wyszukiwania wydrukują nazwę plików zawierających określony ciąg.

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

Zamiast drukowania całego wiersza zawierającego ciąg wyszukiwania, możesz użyć polecenia EGREP, aby wydrukować sam ciąg. Ciąg zostanie wydrukowany liczba razy, kiedy pojawia się w określonym pliku.

Składnia:

$ egrep -o „Search_string” nazwa pliku

Przykład:

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

$ egrep -o ten próbki.tekst

Uwaga: To użycie polecenia przydaje się, gdy szukasz ciągu opartego na wzorze wyrażenia regularnego. W jednym z nadchodzących przykładów szczegółowo wyjaśnimy wyrażenia regularne.

Przykład 8: Wyświetlanie N liczby linii przed, po lub wokół ciągu wyszukiwania

Czasami bardzo ważne jest, aby znać kontekst 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świetlania wiersza zawierającego ciąg wyszukiwania, a także określoną liczbę linii wcześniej, po i otaczają.

To jest przykładowy plik tekstowy, którego będę używać do wyjaśnienia nadchodzących przykładów:

N Liczba linii po ciągu wyszukiwania:

Korzystanie z flagi w następujący sposób wyświetli linię zawierającą ciąg wyszukiwania i N liczbę linii:

$ egrep -a nazwa pliku „Search_string”

Przykład:

$ egrep -a 2 „próbka” plik.tekst

N Liczba linii przed ciągiem wyszukiwania:

Korzystanie z flagi B w następujący sposób wyświetli linię zawierającą ciąg wyszukiwania i N liczbę linii:

$ egrep -b nazwa pliku „Search_string”

Przykład:

$ egrep -b 2 „próbki”.tekst

N Liczba linii przed ciągiem wyszukiwania:

Korzystanie z flagi C w następujący sposób wyświetli linię zawierającą ciąg wyszukiwania oraz N liczby linii przed i po nim:

$ egrep -c nazwa pliku „Search_string”

Przykład:

$ egrep -c 2 „próbki”.tekst

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

Polecenie Egrep staje się silniejsze, gdy szukasz wyrażeń regularnych zamiast solidnych ciągów wyszukiwania w pliku.

Składnia:

$ egrep „regularexpressions” nazwa pliku

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

Operator powtórzeń Używać
? Poprzedni element wcześniej ? jest opcjonalnie i jest dopasowany maksymalnie jeden raz
* Poprzedni element przed * będzie dopasowany zero lub więcej razy
+ Poprzedni element przed + będzie dopasowany jeden lub więcej razy
N Poprzedni element jest dokładnie dopasowany N Liczba razy.
N, Poprzedni element jest dopasowany n lub więcej razy
,M Poprzedni element jest dopasowany maksymalnie m
n, m Poprzedni element jest dopasowany co najmniej n razy, ale nie więcej niż m

Przykład:

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

Zaczynając od „gnome” i kończąc na „programach”

Przykład 10: Podkreślanie ciągu wyszukiwania

Po ustawieniu zmiennej środowiskowej GREP_OPTIONS jak poniżej, otrzymasz wyjście z ciągiem/wzorem wyszukiwania podświetlonym w wynikach:

$ sudo eksport 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: Wykonanie wyszukiwania odwróconego w pliku

Przez Invert Search rozumiemy, że polecenie EGREP drukuje wszystko w pliku, z wyjątkiem linii zawierających ciąg wyszukiwania. Użyjemy następującego przykładowego pliku, aby wyjaśnić odwrócenie wyszukiwania za pośrednictwem Egrep. Wydrukowaliśmy zawartość pliku za pomocą polecenia CAT:

Składnia:

$ egrep -v „Search_string” nazwa pliku

Przykład:

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

$ egrep -v „dwa” próbki.tekst

Możesz zobaczyć, w jaki sposób wyjście zawiera wszystko z pliku przykładowego, z wyjątkiem drugiego wiersza zawierającego ciąg wyszukiwania „Dwa”.

Przykład 12: Wykonanie wyszukiwania odwróconego na podstawie wielu kryteriów/wzoru wyszukiwania

Za pomocą flagi -V możesz także wykonać polecenie EGREP, aby przeprowadzić odwrócone wyszukiwanie w oparciu o więcej niż jeden ciąg wyszukiwania/wzór.

Będziemy używać tego samego przykładowego pliku, o którym wspomnialiśmy w przykładzie 11, aby wyjaśnić ten scenariusz.

Składnia:

$ egrep -v -e „wyszukiwanie_string„/”” -e „Search_string„/”wzór”
… Nazwa pliku

Przykład:

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

$ egrep -v -e „jeden” -e „dwa” próbki.tekst

Dostaliśmy dwa słowa, aby pominąć za pomocą flagi -e, dlatego wyjście pojawią się w następujący sposób:

Przykład 13: Drukowanie liczby linii pasujących do ciągu wyszukiwania

Zamiast drukowania wyszukiwanego ciągu z pliku lub linii zawierających, możesz użyć polecenia EGREP, aby się zliczyć i wydrukować liczbę linii dopasowanych do ciągu. Ta liczba można pobrać za pomocą flagi -C za pomocą polecenia Egrep.

Składnia:

$ egrep -c „wyszukiwanie_string” nazwa pliku

Przykład:

W tym przykładzie użyjemy flagi -C, aby policzyć liczbę linii zawierających słowo „to” w naszym przykładowym pliku:

$ egrep -c „this” nazwa pliku

Możesz także użyć funkcji Invert Search tutaj, aby liczyć i wydrukować liczbę linii, które nie zawierają ciągu wyszukiwania:

$ grep -v -c „wyszukiwanie_string” nazwa pliku

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

Za pomocą flagi -N możesz uczynić polecenie EGREP, aby wydrukować dopasowaną linię wraz z numerem linii zawierającym ciąg wyszukiwania.

Składnia:

$ grep -n „wyszukiwanie nazwy pliku”

Przykład:

$ grep -n „this” próbka.tekst

Możesz zobaczyć, jak wyświetlane są numery linii według wyników wyszukiwania.

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

Jeśli chcesz poznać pozycję w pliku, w którym istnieje ciąg wyszukiwania, możesz użyć flagi -B z poleceniem Egrep.

$ grep -o -b "search_string" nazwa pliku

Przykład:

$ grep -o -b „ten” próbka.tekst

Wyniki wyszukiwania wydrukują przesunięcie bajtu pliku, w którym istnieje słowo wyszukiwania.To było szczegółowe użycie polecenia EGREP. Korzystając z kombinacji flag wyjaśnionych w tym artykule, możesz wykonywać bardziej znaczące i złożone wyszukiwania plików.