Ocena użytkowników:  / 15
SłabyŚwietny 

 

Polecenie  grep (globally look for a regular expression end print – co na polski można przetłumaczyć: wyszukaj w pliku napisów spełniających wyrażenie regularne i wyświetl je) służy do znalezienia każdego wystąpienia słowa – ciągu znaków, frazy – w pliku utworzonym w systemie Linux. Ogólny wzór polecenia  grep można przedstawić następująco:

grep  [ opcja ]   [ -e ]  [ wzór ]    [nazwa pliku]

 

Opcje

-b wyświetla odnalezione miejsca

-c wyświetla liczbę odnalezionych wyrażeń

-h nie wypisuje nazwy plików przed każdym odnalezionym miejscem

-i ignoruje różnice w wielkości liter

-l wyświetla tylko nazwy plików w których odnaleziony został wzór

-n wyświetla numer każdego wiersza, w którym został odnaleziony wzór

-s brak wyświetlania jakichkolwiek komunikatów

-v wyświetla tylko te wiersze, które nie zawierają wzoru

-w wyświetla tylko te wiersz, w których wzór jest całym wyrazem

 

Kilka przykładów z poleceniem grep

$ grep   -n ‘^piotr:’  /etc/passwd

Wyjaśnienie: polecenie grep wyświetla na ekranie wiersz z pliku /etc/passwd który definiuje użytkownika „piotr” i dodatkowo poprzedza wiersz jego numerem w pliku /etc/passwd

 

$ ls  /   |   grep  „^r.*”

Wyjaśnienie:

 

$  ls  /   grep  „r.*”


Do nauki polecenia grep, które używane jest z wyrażeniami regularnymi musimy utworzyć plik pozwalający zaprezentować wszystkie możliwości zarówno polecenia grep jak i wyrażeń regularnych. Dane zawarte w tym pliku mogą wydawać się sztuczne lecz umożliwią nam one z względnie wystarczającym zapoznaniem się z omawianym tematem. Przy pomocy edytora vi (patrz rozdział IX) utwórzmy plik o nazwie dataplik:

Znaczenie danych zawartych w kolumnach

Kregkato               KA          Jan Kowalski                23           .98.              \3\              88

Kregkato               KA          Piotr Pawlak                23            .98.              \3\              88

Pregpod                PO         Krzysztof Wrak             25            .45.              \2\              77

Cregcent               CE          Jola Kruk                    19             .74               \1\              65

Mregmazu              MA         Urszula Kropiuk            14             .54.              \5\              85

Pregpod                PO         Zygmunt Malina            25            .45.              \2\               54

Wregwielko            WK        Marian Kluska               35             .98.              \4\              77

Greggda                 GD         Katarzyna  Polak          58             .69.              \9\              87

Cregcent                CE         Mariusz Pol                  19             .54.              \1\              77

 

przypominam, że po wpisaniu danych naciskamy przycisk [Esc] następnie wystukujemy :, który ukazuje się w dolnym lewym rogu i wprowadzamy polecenie   :wq . Plik  dataplik jest utworzony i możemy go zacząć testować przy pomocy polecenia grep zawierającego lub nie zawierającego wyrażenia regularne.

 

Przykłady:

$ grep  WK  dataplik

 Wregwielko                WK                 Marian Kluska 35            .98.              \4\               91

 

Wyjaśnienie: Na ekranie wyświetlają się linie zawierające wyrażenie regularne  WK znajdujące się w pliku dataplik

 

$ grep   ‘^C’  dataplik

Cregcent                      CE                   Jola Kruk                    19            .74               \1\              65

Cregcent                      CE                   Mariusz Pol                 19            .54.               \1\              25

Wyjaśnienie: Na ekranie wyświetlają się wszystkie linie zaczynające się od  „C”, symbol ^ pokazuje ,że szukamy wierszy które zaczynają się od znaku (czy wyrażenia regularnego) znajdującego się zanim . W tym przypadku jest to litera C.

 

$ grep  ‘4$’   dataplik

Pregpod                       PO                   Zygmunt Malina          25            .45.              \2\              54

Wyjaśnienie: Na ekranie wyświetlają się linie kończące się cyfrą „4”. Symbol  $ pokazuje, że poszukiwania znaków rozpoczynamy od końca wiersza. W tym wypadku znakiem tym jest cyfra 4.

$

 

grep  ‘4\. ’  dataplik

Cregcent                      CE                   Jola Kruk                    19            .74.              \1\               65

Mregmazu                     MA                  Urszula Kropiuk            14            .54.              \5\               85

Cregcent                      CE                   Mariusz Pol                  19            .54.              \1\               25

Wyjaśnienie: Na ekranie wyświetlają się linie zdefiniowane przez wyrażenie regularne  zawierające  zdefiniowane przez   ‘4\.  ‘  czyli wyszukujemy wierszy które zawierają cyfre cztery po której następuje kropka a następnie spacja.

 

grep  ‘\\3\\’  dataplik

Kregkato                     KA                  Jan Kowalski               23            .98.              \3\               88

Kregkato                     KA                  Piotr Pawlak               23            .98.              \3\               88

Wyjaśnienie: Na ekranie wyświetlają się linie zawierające cyfrę „3” obramowaną przez \3\

 

grep  ‘^[KW]’  dataplik

Kregkato                     KA                  Jan Kowalski               23            .98.              \3\               88

Kregkato                     KA                  Piotr Pawlak               23            .98.              \3\               88

Wregwielko                 WK                 Marian Kluska              35            .98.              \4\               91

Wyjaśnienie: Na ekranie wyświetlają się wszystkie linie zaczynające się o litery „K”  albo „W”.

 

$  grep ‘[A-Z][A-]  [A-Z][A-Z]

Kregkato                     KA                  AB Kowalski               23            .98.              \3\               88

Greggda                      GD                  DA  Polak                 58             .69.              \9\               87

 Wyjaśnienie: Na ekranie wyświetlają się linie zawierające dwie duże litery następujące natychmiast po sobie po których występuje spacja i znów dwie duże litery następujące natychmiast po sobie.

 

$  grep ‘ll* ‘  dataplik

Cregcent                      CE                   Jola Krul                     19            .74               \1\               65

Cregcent                      CE                   Mariusz Poll                 19            .54.              \1\               25

Wyjaśnienie: Na ekranie wyświetlają się linie zawierające małą literę „l” po której występuje zero lub więcej razy także mała litera „l” po której następuje spacja

 

 

Wyrażenia Regularne Rozdział 8.2 Darmowy kurs Linux

Grep

Komentarze   

 
+4 #1 RE: 8.3 Polecenie grep z wyrażeniami regularnymiRafał Rafał 2013-03-30 13:42
zamiast:

grep ‘[A-Z][A-] [A-Z][A-Z]

chyba powinno być

grep ‘[A-Z][A-Z] [A-Z][A-Z]‘

lecz aby wykluczyć 'błąd' ilości spacji pomiędzy kolumnami można to zrobić tak:

[A-Z][A-Z] *[A-Z][A-Z]

a można jeszcze inaczej np.:

[A-Z]{2} *[A-Z]{2}

Pozdrawiam ;)
Cytować
 
 
0 #2 RE: 8.3 Polecenie grep z wyrażeniami regularnymiDamian 2013-04-12 23:05
A jak zrobić żeby wyświetliło wyraz zawierający literę a i żeby nie wyświetlało wyrazów w których po literze a występuje f, l, n? :) i jak zrobić żeby wyświetlało wyrazy zaczynające się na an i kończące cyfra?
Cytować
 
 
+1 #3 RE: 8.3 Polecenie grep z wyrażeniami regularnymiRafał Rafał 2013-04-17 22:23
Cytat:
i jak zrobić żeby wyświetlało wyrazy zaczynające się na an i kończące cyfra?
np, tak:

z konsoli:
grep "\(\^\(an\)\)*\([0-9]\$\)"

regexp:
(^(an))*([0-9]$)

Cytat:
A jak zrobić żeby wyświetliło wyraz zawierający literę a i żeby nie wyświetlało wyrazów w których po literze a występuje f, l, n?
to już zostawiam Tobie na przemyślnie ;)
Cytować
 
 
0 #4 RE: 8.3 Polecenie grep z wyrażeniami regularnymiRafał _gosc 2013-11-04 07:00
A jak zrobić by pokazywał tylko jedną z kolumn albo tylko znaleziony ciąg znaków
Cytować
 
 
0 #5 RE: 8.3 Polecenie grep z wyrażeniami regularnymigrepowiec 2015-07-11 03:24
Cytat:
$ grep ‘ll* ‘ dataplik Cregcent CE Jola Krul 19 .74 \1\ 65 Cregcent CE Mariusz Poll 19 .54. \1\ 25 Wyjaśnienie: Na ekranie wyświetlają się linie zawierające małą literę „l” po której występuje zero lub więcej razy także mała litera „l” po której następuje spacjaCytat:
$ grep ‘ll* ‘ dataplik Cregcent CE Jola Krul 19 .74 \1\ 65 Cregcent CE Mariusz Poll 19 .54. \1\ 25 Wyjaśnienie: Na ekranie wyświetlają się linie zawierające małą literę „l” po której występuje zero lub więcej razy także mała litera „l” po której następuje spacja
Jest tu błąd nie ma: Cytat:
Cregcent CE Jola Kruk 19 .74 \1\ 65
w pliku także to polecenie powinno wyświetlić jeden rekord
Cytować
 
 
0 #6 RE: 8.3 Polecenie grep z wyrażeniami regularnymiGosc 2015-10-05 13:17
Fajny poradnik ;)
Przydał się.
Cytować
 
 
0 #7 profileprofile 2016-12-16 15:14 Cytować
 

Dodaj komentarz


Kod antyspamowy
Odśwież

Zaloguj się

Kurs Linux

E-korupcja.pl - E-book

Pierwsza książka o korupcji w informatyzacji

Dowiesz się z niej:

  • jak firmy amerykańskie korumpowały polskich ministrów.
  • dlaczego informatyzacja ZUS nie jest jeszcze zakończona.
  • dlaczego płacimy więcej od amerykanów za nasze systemy informatyczne.
  • co robić by wyrugować korupcję

e-korupcja