Skip to main content

Przykładowe zastosowania polecenia Linux grep

Regular Expressions - Linux Tutorial 10 (Czerwiec 2026)

Regular Expressions - Linux Tutorial 10 (Czerwiec 2026)
Anonim

Polecenie Linux grep jest używane jako metoda filtrowania danych wejściowych. GREP to skrót od Global Regular Expression Printer, dlatego aby móc go efektywnie używać, musisz mieć wiedzę na temat wyrażeń regularnych.

W tym artykule dowiesz się wielu przykładów, które pomogą Ci zrozumieć polecenie grep.

01 z 09

Jak wyszukać ciąg w pliku za pomocą GREP

Wyobraź sobie, że masz plik tekstowy o nazwie książki zawierający następujące tytuły książek dla dzieci:

  • Robin Hood
  • Czerwony Kapturek
  • Piotruś Pan
  • Złotowłosa i trzy niedźwiadki
  • Królewna Śnieżka i siedmiu krasnoludków
  • Pinnochio
  • Kot w kapeluszu
  • Trzy małe świnki
  • Gruffalo
  • Charlie i fabryka czekolady

Aby znaleźć wszystkie książki ze słowem "The" w tytule, należy użyć następującej składni:

grep Książki

Zwrócone zostaną następujące wyniki:

  • Złotowłosa i trzy niedźwiadki
  • Królewna Śnieżka i siedmiu krasnoludków
  • Kot w kapeluszu
  • Trzy małe świnki
  • Gruffalo
  • Charlie i fabryka czekolady

W każdym przypadku słowo "The" zostanie podświetlone.

W wyszukiwaniu rozróżniana jest wielkość liter, więc jeśli jeden z tytułów miał "the" zamiast "The", to nie zostałby on zwrócony.

Aby zignorować sprawę, możesz dodać następujący przełącznik:

grep the books --ignore-case

Możesz także użyć przełącznika -i w następujący sposób:

grep -i książki

Kontynuuj czytanie poniżej

02 z 09

Wyszukaj ciąg w pliku za pomocą symboli wieloznacznych

Polecenie grep jest bardzo potężne. Możesz użyć wielu technik porównywania wzorców do filtrowania wyników.

W tym przykładzie pokażę ci, jak wyszukiwać ciąg znaków w pliku za pomocą symboli wieloznacznych.

Wyobraź sobie, że masz plik o nazwie miejsca z następującymi szkockimi nazwami miejsc:

aberdeenaberystwythaberlourinverurieinvernessNewburghnowy jeleńnowy gallowayglasgowEdynburg

Jeśli chcesz znaleźć wszystkie miejsca z inwerterem w nazwie, użyj następującej składni:

grep inver * miejsca

Gwiazdka z symbolem gwiazdki (*) oznacza 0 lub wiele. Dlatego jeśli masz miejsce zwane inwertorem lub miejsce zwane Inverness, oba zostaną zwrócone.

Kolejną maską, której możesz użyć, jest kropka (.). Możesz użyć tego do dopasowania pojedynczej litery.

grep inver.r places

Powyższa komenda znajdowałaby miejsca zwane inverurie i inverary, ale nie znajdowały by się zbytnio, ponieważ może istnieć tylko jedna wieloznaczna między dwoma r, jak oznaczono przez pojedynczy okres.

Okresowy symbol wieloznaczny jest przydatny, ale może powodować problemy, jeśli jest on częścią tekstu, którego szukasz.

Na przykład spójrz na tę listę nazw domen

  • linux.about.com
  • pcsupport.about.com
  • mp3.about.com
  • minecraft.about.com
  • androidgames.about.com
  • netforbeginners.about.com
  • everyonelinuxuser.com
  • google.co.uk
  • google.au
  • direct.gov.uk

Aby znaleźć wszystkie informacje o plikach .com, które można po prostu przeszukiwać, użyj następującej składni:

grep * about * domainnames

Powyższa komenda padłaby, gdyby lista zawierała w sobie następującą nazwę:

  • everyonelinuxuser.com/about.html

Można zatem wypróbować następującą składnię:

grep * about.com nazwy domen

To działałoby dobrze, chyba że istnieje domena o następującej nazwie:

aboutycom.com

Aby naprawdę wyszukać termin o.com, musisz uciec z kropki w następujący sposób:

grep * o domenie .com

Ostatnim symbolem wieloznacznym, który można pokazać, jest znak zapytania, który oznacza zero lub jeden znak.

Na przykład:

grep? ber placenames

Powyższe polecenie zwróci aberdeen, aberystwyth lub nawet berwick.

Kontynuuj czytanie poniżej

03 z 09

Szukaj ciągów na początku i na końcu wiersza za pomocą grep

Symbol karat (^) i dolar ($) umożliwiają wyszukiwanie wzorców na początku i końcu linii.

Wyobraź sobie, że masz plik o nazwie piłka nożna o następujących nazwach drużyn:

  • Blackpool
  • Liverpool
  • Manchester
  • Leicester City
  • Manchester United
  • Newcastle United
  • FC United Of Manchester

Jeśli chcesz znaleźć wszystkie zespoły, które rozpoczęły się w Manchesterze, użyjesz następującej składni:

grep ^ Manchester drużyny

Powyższe polecenie zwróci Manchester City i Manchester United, ale nie FC United Of Manchester.

Alternatywnie możesz znaleźć wszystkie zespoły kończące się na United, używając następującej składni:

grep drużyny United $

Powyższe polecenie powróciłoby do Manchesteru United i Newcastle United, ale nie do FC United Of Manchester.

04 z 09

Zliczanie liczby meczów za pomocą grep

Jeśli nie chcesz zwracać rzeczywistych linii pasujących do wzorca przy użyciu polecenia grep, ale chcesz się tylko dowiedzieć, ile można użyć następującej składni:

grep -c plik wejściowy wzorca

Jeśli wzorzec został dopasowany dwukrotnie, zwracana byłaby liczba 2.

Kontynuuj czytanie poniżej

05 z 09

Znajdowanie wszystkich terminów, które nie pasują do grep

Wyobraź sobie, że masz listę nazw miejscowości z następującymi krajami:

  • aberdeen Szkocja
  • glasgow Szkocja
  • liverpool w Anglii
  • Colwyn Bay
  • Londyn, Anglia

Być może zauważyłeś, że Colwyn Bay nie ma powiązanego kraju.

Aby wyszukać wszystkie miejsca w danym kraju, możesz użyć następującej składni:

grep land $ miejsca

Zwrócone wyniki będą wszystkimi miejscami z wyjątkiem colwyn bay.

To oczywiście działa tylko w miejscach, które kończą się lądem (mało naukowym).

Możesz odwrócić wybór, używając następującej składni:

grep -v land $ miejsca

Znajdowałoby to wszystkie miejsca, które nie kończyły się lądem.

06 z 09

Jak znaleźć puste linie w plikach za pomocą grep

Wyobraź sobie, że masz plik wejściowy, który jest używany przez aplikację innej firmy, która przestaje czytać plik, gdy znajdzie pusty wiersz w następujący sposób:

  • aberdeen scotland
  • inverness scotland
  • liverpool w Anglii
  • Colwyn Bay Wales

Kiedy aplikacja dostaje się do linii po liverpool, przestanie czytać, co oznacza, że ​​colwyn bay zupełnie nie trafia.

Możesz użyć polecenia grep, aby wyszukać puste wiersze z następującą składnią:

grep ^ $ places

Niestety nie jest to szczególnie przydatne, ponieważ po prostu zwraca puste linie.

Można oczywiście uzyskać liczbę pustych wierszy jako sprawdzenie, aby sprawdzić, czy plik jest ważny w następujący sposób:

grep -c ^ $ miejsc

Byłoby jednak bardziej przydatne, aby znać numery linii, które mają pustą linię, aby można było je zastąpić. Możesz to zrobić za pomocą następującego polecenia:

grep -n ^ $ miejsc

Kontynuuj czytanie poniżej

07 z 09

Jak szukać ciągów wielkich lub małych znaków za pomocą grep

Za pomocą polecenia grep możesz określić, które wiersze w pliku mają wielkie litery, używając następującej składni:

grep "A-Z" nazwa pliku

Nawiasy kwadratowe pozwalają określić zakres znaków. W powyższym przykładzie pasuje do dowolnego znaku między A i Z.

Dlatego aby dopasować małe litery, możesz użyć następującej składni:

grep "a-z" nazwa pliku

Jeśli chcesz dopasować tylko litery, a nie cyfry lub inne symbole, możesz użyć następującej składni:

grep 'a-zA-Z' filename

Możesz zrobić to samo z liczbami w następujący sposób:

grep "0-9" nazwa pliku 08 09

Poszukiwanie powtarzających się wzorców za pomocą grep

Możesz użyć nawiasów klamrowych {}, aby wyszukać powtarzający się wzór.

Wyobraź sobie, że masz plik z numerami telefonów w następujący sposób:

  • 055-1234
  • 055-4567
  • 555-1545
  • 444-0167
  • 444-0854
  • 4549-2234
  • x44-1234

Wiesz, że pierwsza część numeru musi składać się z trzech cyfr i chcesz znaleźć linie, które nie pasują do tego wzorca.

Z poprzedniego przykładu wiesz, że 0-9 zwraca wszystkie liczby w pliku.

W tym przypadku chcemy, aby wiersze zaczynały się od trzech liczb zakończonych łącznikiem (-). Możesz to zrobić za pomocą następującej składni:

grep "^ 0-9 0-9 0-9 -" liczby

Jak wiemy z poprzednich przykładów, karat (^) oznacza, że ​​linia musi zaczynać się od następującego wzoru.

0-9 wyszuka dowolną liczbę z zakresu od 0 do 9. Jako że jest ona zawarta trzy razy, dopasowuje 3 liczby. Na końcu jest łącznik oznaczający, że łącznik musi zastąpić trzy liczby.

Za pomocą nawiasów klamrowych możesz zmniejszyć wyszukiwanie w następujący sposób:

grep "^ 0-9 {3 } -" liczby

Ukośnik wymyka się {nawiasu klamrowego, tak aby działał jako część wyrażenia regularnego, ale w gruncie rzeczy chodzi o to, że 0-9 {3} oznacza dowolną liczbę od 0 do 9 trzy razy.

Kręcone nawiasy mogą być również używane w następujący sposób:

{5,10}{5,}

{5, 10} oznacza, że ​​poszukiwana postać musi zostać powtórzona co najmniej 5 razy, ale nie więcej niż 10, podczas gdy {5,} oznacza, że ​​postać musi zostać powtórzona co najmniej 5 razy, ale może to być więcej.

Kontynuuj czytanie poniżej

09 09

Używanie wyjścia z innych poleceń Używanie polecenia grep

Do tej pory przyjrzeliśmy się dopasowywaniu wzorców w poszczególnych plikach, ale grep może używać danych wyjściowych z innych poleceń jako danych wejściowych do dopasowywania wzorców.

Doskonałym tego przykładem jest użycie polecenia ps, które zawiera listę aktywnych procesów.

Na przykład uruchom następujące polecenie:

ps -ef

Zostaną wyświetlone wszystkie uruchomione procesy w twoim systemie.

Możesz użyć polecenia grep do wyszukania określonego działającego procesu w następujący sposób:

ps -ef | grep firefox

streszczenie

Polecenie grep jest podstawowym poleceniem dla systemu Linux i warto je poznać, ponieważ znacznie ułatwi to wyszukiwanie plików i procesów podczas korzystania z terminala.