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 -anazwa 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 -bnazwa 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 -cnazwa 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.