Samouczek dotyczący wyrażeń regularnych w systemie Linux: przykład wyrażenia regularnego Grep
Co to są wyrażenia regularne w systemie Linux?
Wyrażenia regularne w Linuksie są znakami specjalnymi, które pomagają wyszukiwać dane i dopasowywać złożone wzorce. Wyrażenia regularne są skracane jako 'regexp' lub 'regex'. Są używane w wielu programach Linux, takich jak grep, bash, rename, sed itp.
Rodzaje wyrażeń regularnych
Dla ułatwienia zrozumienia poznajmy po kolei różne typy wyrażeń regularnych.
Kliknij w tym miejscu jeśli film nie jest dostępny
Podstawowe wyrażenia regularne
Niektóre z powszechnie używanych poleceń z wyrażeniami regularnymi to tr, sed, vi i grep. Poniżej wymienione są niektóre z podstawowych wyrażeń regularnych.
| symbol | Descriptjony |
|---|---|
| . | zastępuje dowolny znak |
| ^ | dopasowuje początek łańcucha |
| $ | dopasowuje koniec łańcucha |
| * | dopasowuje zero lub więcej razy poprzedzający znak |
| \ | Reprezentuj znaki specjalne |
| () | Grupuje wyrażenia regularne |
| ? | Pasuje dokładnie do jednego znaku |
Zobaczmy przykład.
Wykonaj przykład cat, aby zobaczyć zawartość istniejącego pliku
Wyszukaj treść zawierającą literę „a”.
"^' dopasowuje początek łańcucha. Wyszukajmy treści, które ZACZYNAJĄ SIĘ od a
Filtrowane są tylko linie zaczynające się od znaku. Linie niezawierające na początku znaku „a” są ignorowane.
Spójrzmy na inny przykład –
Wybierz tylko te linie, które kończą się na t, używając $
Interwał Wyrażenia regularne
Wyrażenia te mówią nam o liczbie wystąpień znaku w ciągu. Oni są
| Wyrażenie | OPIS |
|---|---|
| {nie} | Pasuje do poprzedzającego znaku występującego dokładnie n razy |
| {n, m} | Dopasowuje poprzedzający znak występujący n razy, ale nie więcej niż m |
| {N, } | Dopasowuje poprzedzający znak tylko wtedy, gdy pojawia się n lub więcej razy |
Przykład:
Odfiltruj wszystkie linie zawierające znak „p”
Chcemy sprawdzić, czy znak „p” pojawia się dokładnie 2 razy w ciągu znaków, jeden po drugim. W tym celu składnia byłaby następująca:
cat sample | grep -E p\{2}
Uwaga: Do tych wyrażeń regularnych należy dodać -E.
Rozszerzone wyrażenia regularne
Te wyrażenia regularne zawierają kombinacje więcej niż jednego wyrażenia. Niektórzy z nich są:
| Wyrażenie | OPIS |
|---|---|
| \+ | Dopasowuje jedno lub więcej wystąpień poprzedniego znaku |
| \? | Dopasowuje zero lub jedno wystąpienie poprzedniego znaku |
Przykład:
Wyszukiwanie wszystkich znaków „t”
Załóżmy, że chcemy odfiltrować wiersze, w których znak „a” poprzedza znak „t”
Możemy użyć polecenia takiego jak
cat sample|grep "a\+t"
Rozszerzenie klamry
Składnia rozwijania nawiasów to sekwencja lub lista oddzielonych przecinkami elementów umieszczonych w nawiasach klamrowych „{}”. Elementy początkowe i końcowe w sekwencji są oddzielone dwiema kropkami „..”.
Kilka przykładów:
W powyższych przykładach polecenie echo tworzy ciągi znaków przy użyciu rozwinięcia nawiasów.
Podsumowując:
- Wyrażenia regularne to zestaw znaków używany do sprawdzania wzorców w ciągach
- Nazywa się je również „regexp” i „regex”.
- Ważne jest, aby nauczyć się wyrażeń regularnych podczas pisania skryptów
- Oto kilka podstawowych wyrażeń regularnych:
| symbol | Descriptjony |
|---|---|
| . | zastępuje dowolny znak |
| ^ | dopasowuje początek łańcucha |
| $ | dopasowuje koniec łańcucha |
- Niektóre rozszerzone wyrażenia regularne to:
| Wyrażenie | OPIS |
|---|---|
|
\+ |
Dopasowuje jedno lub więcej wystąpień poprzedniego znaku |
| \? | Dopasowuje zero lub jedno wystąpienie poprzedniego znaku |
- Niektóre interwałowe wyrażenia regularne to:
| Wyrażenie | OPIS |
|---|---|
| {nie} | Pasuje do poprzedzającego znaku występującego dokładnie n razy |
| {n, m} | Dopasowuje poprzedzający znak występujący n razy, ale nie więcej niż m |
| {N, } | Dopasowuje poprzedzający znak tylko wtedy, gdy pojawia się n lub więcej razy |
- Do generowania ciągów znaków używane jest rozwinięcie nawiasów. Pomaga w tworzeniu wielu ciągów z jednego.










