W tym artykule pokazujemy, jak uruchomić zaawansowane wyszukiwanie ciągów za pomocą Grepa z wyrażeniem regularnym, podając 10 praktycznych przykładów jego implementacji. Wiele przykładów omówionych w tym artykule ma praktyczne implikacje, co oznacza, że możesz ich używać w codziennym programowaniu w Linuksie. Poniższe przykłady opisują kilka przykładów wyrażeń regularnych dla często wyszukiwanych wzorców.
Przykład 1: Znajdź pojedynczego czarterującego w pliku tekstowym
Aby wyprowadzić w pliku 'book' wiersze zawierające znak '$', wpisz:
$ grep '\$' książkaPrzykład 2: Znajdź pojedynczy ciąg w pliku tekstowym
Aby wypisać wiersze w pliku „book”, który zawiera ciąg „$14.99', wpisz:
$ grep '\14$\.99' książkaPrzykład 3: Znajdź jednego specjalnego czarterującego w pliku tekstowym
Aby wyprowadzić w pliku „książka” wiersze zawierające znak „\”, wpisz:
$ grep '\\' książkaPrzykład 4: Pasujące linie zaczynające się od określonego tekstu
Użyj 'ˆ' w wyrażeniu regularnym, aby oznaczyć początek linii.
Aby wypisać wszystkie wiersze w '/usr/dict/words' zaczynające się od 'pro', wpisz:
$ grep 'ˆpro' /usr/dict/wordsAby wypisać wszystkie wiersze w pliku 'book', które zaczynają się od tekstu 'na początku', niezależnie od wielkości liter, wpisz:
$ grep -i 'ˆna początku' książkaUWAGA: Te wyrażenia regularne były cytowane z' znakami; dzieje się tak, ponieważ niektóre powłoki traktują znak 'ˆ' jako specjalny „metaznak”
Oprócz wyszukiwania słów i fraz, możesz użyć grep do wyszukiwania złożonych wzorców tekstowych zwanych wyrażeniami regularnymi. Wyrażenie regularne — lub „regexp” — to ciąg tekstowy znaków specjalnych, który określa a zestaw wzorów do dopasowania.
Technicznie rzecz biorąc, wzorce słów lub fraz są wyrażeniami regularnymi – tylko bardzo prostymi. W wyrażeniu regularnym większość znaków, w tym litery i cyfry, reprezentuje siebie. Na przykład wzorzec regexp 1 dopasowuje ciąg '1' i wzorzec chłopiec pasuje do ciągu „chłopiec”.
Istnieje wiele zarezerwowanych znaków zwanych metaznakami, które nie reprezentują siebie w wyrażeniu regularnym, ale mają specjalne znaczenie używane do budowania złożonych wzorców. Te metaznaki są następujące: ., *, [, ], ˆ, $ i \. Warto zauważyć, że takie metaznaki są wspólne dla prawie wszystkich popularnych i specjalnych dystrybucji Linuksa. Oto dobry artykuł, który omawia specjalne znaczenia metaznaków i podaje przykłady ich użycia.
Przykład 5: Dopasowanie linii kończących się określonym tekstem
Użyj „$” jako ostatniego znaku cytowanego tekstu, aby dopasować ten tekst tylko na końcu wiersza. Aby wypisać w pliku wiersze 'going' kończące się wykrzyknikiem, wpisz:
$ grep '!$' idęPrzykład 6: Dopasowanie linii o określonej długości
Aby dopasować wiersze o określonej długości, użyj tej liczby „.' znaków pomiędzy 'ˆ' i '$'-na przykład, aby dopasować wszystkie linie o szerokości dwóch znaków (lub kolumn), użyj 'ˆ… $' jako wyrażenia regularnego do wyszukiwania.
Aby wypisać wszystkie wiersze w '/usr/dict/words' o szerokości dokładnie trzech znaków, wpisz:
$ grep 'ˆ… $' /usr/dict/wordsW przypadku dłuższych linii bardziej przydatne jest użycie innej konstrukcji: 'ˆ.\liczba\$', gdzie liczba to liczba linii do dopasowania. Użyj ',', aby określić zakres liczb.
Aby wypisać wszystkie wiersze w '/usr/dict/words' o szerokości dokładnie dwunastu znaków, wpisz:
$ grep 'ˆ.\12\$' /usr/dict/wordsAby wypisać wszystkie wiersze w „/usr/dict/words”, które mają dwadzieścia dwa lub więcej znaków, wpisz:
$ grep 'ˆ.\22,\$' /usr/dict/wordsPrzykład 7: Pasujące linie, które zawierają dowolne z niektórych wyrażeń regularnych
Aby dopasować wiersze zawierające dowolną liczbę wyrażeń regularnych, określ każde z wyrażeń regularnych do wyszukania między operatorami alternatywnymi ('\|') jako wyrażenie regularne do wyszukania. Linie zawierające dowolne z podanych wyrażeń regularnych zostaną wyprowadzone.
Aby wyświetlić wszystkie wiersze w „playboyu”, które zawierają wzorce „książka” lub „ciasto”, wpisz:
$ grep 'książka\|ciasto' playboyPrzykład 8: Dopasowywanie linii, które zawierają wszystkie niektóre wyrażenia regularne
Aby wyprowadzić wiersze, które pasują wszystko wielu wyrażeń regularnych, użyj grep, aby wypisać wiersze zawierające pierwsze wyrażenie regularne, które chcesz dopasować, i potokuj wynik do grep z drugim wyrażeniem regularnym jako argumentem. Kontynuuj dodawanie potoków do wyszukiwania grep dla wszystkich wyrażeń regularnych, które chcesz wyszukać.
Aby wyświetlić wszystkie wiersze z „playlisty”, która zawiera oba wzorce „brzeg” i „niebo”, niezależnie od wielkości liter, wpisz:
$ grep -i playlista 'the shore' | grep-i nieboPrzykład 9: Pasujące linie, które zawierają tylko określone znaki
Aby dopasować wiersze zawierające tylko określone znaki, użyj wyrażenia regularnego „ˆ[znaki]*$”, gdzie znaki to te, które mają zostać dopasowane. Aby wypisać wiersze w '/usr/dict/words' zawierające tylko samogłoski, wpisz:
$ grep -i 'ˆ[aeiou]*$' /usr/dict/wordsOpcja '-i' dopasowuje znaki bez względu na wielkość liter; więc w tym przykładzie wszystkie znaki samogłosek są dopasowywane niezależnie od wielkości liter.
Przykład 10: Znajdowanie fraz bez względu na odstępy
Jednym ze sposobów wyszukiwania frazy, która może wystąpić z dodatkowymi odstępami między słowami lub w poprzek wiersza lub podziału strony, jest usunięcie wszystkich znaków nowego wiersza i dodatkowych spacji z danych wejściowych, a następnie grep, że. Aby to zrobić, potokuj wejście do tr z "\r\n:\>\|-"jako argumentem opcji '-d' (usuwając wszystkie znaki końca linii z wejścia); prześlij to do filtra fmt z opcją '-u' (wyprowadzając tekst z jednolitymi odstępami); i potrząśnij, aby grep z wzorem do wyszukania.
Aby przeszukać podziały wierszy dla ciągu „w tym samym czasie co” w pliku „docs”, wpisz:
$ dokumentacja kota | tr -d '\r\n:\>\|-' | fmt-u | grep 'w tym samym czasie co'
streszczenie
W tym artykule omówiliśmy 10 praktycznych przykładów użycia polecenia Grep Linux do wyszukiwania i znajdowania ciągów w pliku tekstowym. Po drodze nauczyliśmy się używać wyrażeń regularnych w połączeniu z Grepem do przeprowadzania złożonych wyszukiwań w plikach tekstowych. Teraz masz lepszy pomysł na to, jak potężne są funkcje wyszukiwania Linuksa.
Oto dodatkowe zasoby dla tych, którzy chcą dowiedzieć się więcej o programowaniu w Linuksie:
Zasoby dla administratorów systemu
- Przewodnik administratora systemu Linux - Co to jest system operacyjny Linux i jak to działa
- Przewodnik administratora systemu Linux — omówienie pamięci wirtualnej systemu Linux i pamięci podręcznej bufora dysku
- Przewodnik administratora systemu Linux — najlepsze praktyki monitorowania systemów Linux
- Przewodnik administratora systemu Linux — najlepsze praktyki dotyczące uruchamiania i zamykania systemu Linux
- Przewodnik administratora systemu Linux — najlepsze praktyki tworzenia i zarządzania operacjami tworzenia kopii zapasowych
Zasoby dla programistów jądra Linux
- Jak działa zarządzanie pamięcią systemu operacyjnego Linux
- Kompleksowy przegląd procesów systemu operacyjnego jądra Linux
- Jakie są mechanizmy zarządzania zadaniami jądra Linuksa
Słownik systemu plików Linux
Kompleksowy przegląd działania systemu plików i katalogów Linux