W tym artykule pokazujemy, że uruchamiamy zaawansowane sznurki do wyszukiwania za pomocą GREP z wyrażeniem regularnym, podając 10 praktycznych przykładów na jego implementacjach. Wiele przykładów omówionych w tym artykule ma praktyczne implikacje, co oznacza użycie ich w codziennym programowaniu Linux. Poniższe próbki opisują niektóre przykłady RegexP dla powszechnie wyszukiwanych wzorów.
Ex 1: Znajdź pojedynczego czarterera w pliku tekstowym
Aby wyjść linie w pliku „książka” zawierająca znak „$”, wpisz:
$ grep '\ $' Book
Ex 2: Znajdź pojedynczy ciąg w pliku tekstowym
Do wyjścia linii w pliku „książka”, która zawiera ciąg „14 USD.99 ', Typ:
$ grep '\ 14 $ \.99 'książka
Ex 3: Znajdź jednego specjalnego czarterera w pliku tekstowym
Aby wyjść linie w pliku „książka” zawierająca znak „\”, wpisz:
$ grep '\\' książka
Ex 4: Dopasowanie linii zaczynających się od określonego tekstu
Użyj „ˆ” w RegexP, aby oznaczyć początek linii.
Aby wyświetlić wszystkie wiersze w „/usr/dict/słowa„ począwszy od „pro”, typ:
$ grep 'ˆpro'/usr/dict/słowa
Aby wyświetlić wszystkie wiersze w pliku „książka”, które zaczynają się od tekstu „na początku”, niezależnie od przypadku, wpisz:
$ grep -i 'ˆIn na początku'
NOTATKA: Te regularne wyniki były cytowane z znakami; Wynika to z faktu, że niektóre skorupy w przeciwnym razie traktują postać „ˆ” jako specjalny „Metacharacter”
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”-jest tekstem tekstowym znaków specjalnych, który określa ustawić wzorców do dopasowania.
Technicznie rzecz biorąc, wzorce słowa lub wyrażenia są wyrażeń regularnych-po prostu bardzo proste. W wyrażeniu regularnym większość postaci, w tym litery i liczby. Na przykład wzór RegexP 1 dopasowuje ciąg „1” i wzór chłopak dopasowuje ciąg „Chłopiec”.
Istnieje wiele zastrzeżonych znaków zwanych Metacharacters, które nie reprezentują się w wyrażeniu regularnym, ale mają specjalne znaczenie, które służy do budowania złożonych wzorów. Te metalowce są następujące: ., *, [[[, ], ˆ, $ i \. Należy zauważyć, że takie metacharakty są powszechne wśród prawie wszystkich powszechnych i specjalnych rozkładów Linuksa. Oto dobry artykuł, który obejmuje specjalne znaczenia Metacharacters i podaje przykłady ich użycia.
Ex 5: Dopasowanie linii kończących się na określonym tekście
Użyj „$” jako ostatniej postaci cytowanego tekstu, aby pasował do tego tekstu tylko na końcu linii. Aby wyjść linie w pliku „kończące się” końcem wykrzykników, wpisz:
$ grep '!$ '' Go
Ex 6: Dopasowanie linii o określonej długości
Aby dopasować linie o określonej długości, użyj tej liczby.„Znaki między„ ˆ ”i„ $ ”- dla Expliku, aby dopasować wszystkie linie, które są szerokie dwa znaki (lub kolumny), użyj„ ˆ… $ ”jako regexp, aby wyszukać.
Aby wyświetlić wszystkie linie w „/usr/dict/słowa”, które mają dokładnie trzy znaki, typ:
$ grep 'ˆ… $'/usr/dict/słowa
W przypadku dłuższych linii bardziej przydatne jest użycie innej konstrukcji: „ˆ.\ numer \ $ ', gdzie liczba jest liczbą dopasowania linii. Użyj ',', aby określić zakres liczb.
Aby wyświetlić wszystkie linie w „/usr/dict/słowa”, które mają dokładnie dwanaście znaków, typ:
$ grep 'ˆ.\ 12 \ $ '/usr/dict/słowa
Aby wyświetlić wszystkie linie w „/usr/dict/słowa”, które mają szerokie dwadzieścia dwa lub więcej znaków, wpisz:
$ grep 'ˆ.\ 22, \ $ '/usr/dict/słowa
Ex 7: pasujące linie, które zawierają dowolne z niektórych regulatorów
Aby dopasować linie zawierające dowolną z liczby regularnych, określ każdą z regularności do wyszukiwania między operatorami naprzemiennymi („\ | ') jako regexp do wyszukiwania. Linie zawierające dowolne z podanych regularnych odgazowych będą wysyłane.
Aby wyświetlić wszystkie wiersze w „Playboy”, które zawierają wzory „książka” lub „ciasto”, typ:
$ grep „The Book \ | Cake” Playboy
Ex 8: pasujące linie, które zawierają wszystkie wynórza
Do wyjścia, które pasują Wszystko Z wielu wyrażeń regularnych użyj GREP do wyjściowych linii zawierających pierwszą regexp, którą chcesz dopasować, i wypuszcz wyjście do GREP z drugą regexp jako argument. Kontynuuj dodawanie rur do GREP Searches dla wszystkich wyrażeń od regularności, których chcesz wyszukać.
Aby wyświetlić wszystkie linie w „Lista odtwarzania”, która zawiera oba wzory „brzeg” i „niebo”, niezależnie od przypadku, typ:
$ grep -i „The Shore” Playlist | Grep -i Sky
Ex 9: Dopasowanie linii, które zawierają tylko określone znaki
Aby dopasować linie, które zawierają tylko określone znaki, użyj Regexp 'ˆ [znaki]*$', gdzie postacie są zgodne. Do linii wyjściowych w „/usr/dict/słowa”, które zawierają tylko samogłoski, wpisz:
$ grep -i 'ˆ [aeiou]*$'/usr/dict/słowa
Opcja „-i” odpowiada znakom niezależnie od przypadku; W tym przykładzie wszystkie postacie samogłosek są dopasowane niezależnie od przypadku.
Ex 10: Znalezienie fraz niezależnie od odstępów
Jednym ze sposobów wyszukiwania wyrażenia, które może wystąpić z dodatkowymi przestrzeniami między słowami lub w poprzek linii lub przerwy, jest usunięcie wszystkich linii i dodatkowych przestrzeni z wejścia, a następnie grep to. Aby to zrobić, przełóż dane wejściowe do TR za pomocą „\ r \ n: \> \ |-” jako argument do opcji „-D” (usuwanie wszystkich pęknięć linii z wejścia); Rurka do filtra FMT z opcją „-u” (wyświetlanie tekstu z jednolitym odstępem); i zrób to grep z wzorem, aby poszukać.
Aby wyszukiwać w poprzek linii, przełamy do ciągu „w tym samym czasie, co„ w pliku „Docs”, wpisz:
$ cat Docs | tr -d '\ r \ n: \> \ |
-'| fmt -u | Grep „w tym samym czasie co”
W tym artykule przejrzeliśmy 10 praktycznych przykładów korzystania z 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 GREP do przeprowadzania złożonych wyszukiwań plików tekstowych. Do tej pory masz lepszy pomysł na to, jak potężne funkcje wyszukiwania Linux.
Oto dodatkowe zasoby dla osób zainteresowanych dowiedzieć się więcej o programowaniu Linux:
Kompleksowy przegląd działania plików i katalogu Linux