Znalezienie ciągów w plikach tekstowych za pomocą GREP z wyrażeniem regularnym

Znalezienie ciągów w plikach tekstowych za pomocą GREP z wyrażeniem regularnym
GREP jest jednym z najpopularniejszych narzędzi do wyszukiwania i znajdowania ciągów w pliku tekstowym. Nazwa „grep” pochodzi z polecenia w edytorze edytora edycji edy globalnie za pośrednictwem pliku dla Wyrażenie regularne i wtedy druk te linie były g/re/p, gdzie RE był wyrażeniem regularnym, którego użyłbyś. Ostatecznie polecenie GREP zostało napisane, aby przeprowadzić to wyszukiwanie w pliku, gdy nie korzystanie z ED.

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”

Streszczenie

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:

Zasoby dla administratorów systemu

  • Podręcznik administratora systemu Linux- co to jest system operacyjny Linux i jak to działa
  • Podręcznik administratora systemu Linux- Przegląd pamięci wirtualnej Linux i pamięci bufora dysku
  • Podręcznik administratora systemu Linux- najlepsze praktyki monitorowania systemów Linux
  • Podręcznik administratora systemu Linux- najlepsze praktyki wykonywania butów i wyłączeń Linux
  • Podręcznik administratora systemu Linux- najlepsze praktyki do 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 za zarządzanie zadaniami jądra Linux
Słownik systemu plików Linux

Kompleksowy przegląd działania plików i katalogu Linux