Globalne drukowanie wyrażeń regularnych lub po prostu grep jest jednym z najbardziej wszechstronnych i popularnych poleceń w systemach Unix i Linux. Polecenie szuka pojedynczych lub wielu plików wejściowych i pasujących linii wzorca. W rezultacie otrzymujesz standardowe wyjście z pasującymi liniami.
Jeśli nie określisz pliku, grep użyje standardowego wejścia do odczytów i najprawdopodobniej będzie to wyjście innego polecenia. Ogólnie rzecz biorąc, grep ma prostą składnię, niezależnie od tego, czy używasz go z nazwą pliku, czy bez niego.
W tym artykule znajduje się krótki przegląd składni grep i kilku podstawowych poleceń, których można używać z nazwą pliku lub bez niego.
Zanim zaczniesz
Wszystkie polecenia grep mają tę samą składnię, a każdy parametr ma określoną funkcję. Oto przykładowa linia:
grep WZÓR
Możesz użyć wielu OPCJI w grep do sterowania wyjściem komendy, a liczba zaczyna się od zera. WZÓR wskazuje wzorzec wyszukiwania, który chcesz zastosować. Jeśli chodzi o PLIK, tutaj jest nazwa pliku lub nazwy, ale parametr można ustawić na zero.
Wyszukiwanie ciągów w danych wyjściowych polecenia
Jak wskazano, nie trzeba używać określonych plików wejściowych. Dane wyjściowe innego polecenia mogą być użyte w grep, aby uzyskać wiersze dokładnie pasujące do wzorca. Można to wykorzystać do ustalenia, które procesy są aktywne w systemie. Oto przykładowa składnia polecenia:
$ ps -ef | grep www-data
Otrzymany wynik powinien wyglądać mniej więcej tak:
www-data 18247 12675 4 16:00? 00:00:00 php-fpm: basen www
root 18272 17714 0 16:00 pkt / 0 00:00:00 grep –kolor = auto –klucz-katalog = .bzr –klucz-katalog = CVS –klucz-katalog = .git –klucz-katalog = .hg –klucz- katalog = .svn www-data
www-data 31147 12770 0 Oct22? 00:05:51 nginx: proces roboczy
www-data 31148 12770 0 Oct22? 00:00:00 nginx: proces menedżera pamięci podręcznej
Istnieje sposób na wykluczenie wiersza poleceń zawierającego procesy grep. W tym celu musisz użyć $ ps -ef | grep www-data | polecenie grep -v grep .
Grep Word Search
Możesz użyć poleceń grep, aby wyszukać określone słowa w plikach w systemie. W rzeczywistości nie trzeba wpisywać całego słowa. Możesz na przykład użyć gnu, a polecenie wypisuje wszystkie słowa, które zawierają te trzy litery. Składnia polecenia jest następująca:
$ grep gnu / usr / share / words
Po wykonaniu polecenia wynik powinien wyglądać mniej więcej tak:
Gwiazdozbiór Łabędzia
gnu antylopa
interregnum
lgnu9d
węgiel brunatny
magnum
magnuson
torfowiec
nakrętka motylkowa
Z drugiej strony możesz wyszukać tylko określone słowo lub ciąg liter i wykluczyć wszystko inne. W tym celu musisz dodać -w lub –word - regexp do składni. W tym przypadku przykładowe polecenie wygląda następująco - $ grep -w gnu / usr / share / words .
Uwaga: do celów gramatycznych niektóre polecenia mają kropkę na końcu. Nie potrzebujesz tego znaku interpunkcyjnego do grep. Wyklucz je podczas kopiowania / wklejania polecenia.
Czy w Grep rozróżniana jest wielkość liter?
Wszystkie polecenia grep domyślnie uwzględniają wielkość liter. Oznacza to, że używanie małych i wielkich liter ma znaczenie w samym poleceniu. Możesz jednak dodać - i ( - ignore - case ) do wiersza poleceń i pozwolić systemowi na wyszukiwanie zarówno wielkich, jak i małych słów.
Na przykład twoje polecenie wprowadzania może wyglądać tak: $ grep -i Zebra / usr / share / words . Pozwala to wyjściowemu dopasować dowolną kombinację wielkich i małych liter podczas wyszukiwania zebry.
Numery linii
Użyj opcji –line-number lub po prostu -n, aby określić liczbę linii z ciągiem pasującym do określonego wzorca wyszukiwania. W rezultacie otrzymujesz standardowe wyjście z numerem linii przed nim.
Dokładne polecenie może wyglądać następująco: $ grep -n 10000 / etc / services . Po wykonaniu dane wyjściowe zawierają wszystkie znalezione dopasowania w 10000 wierszach. Sprawdź przykład poniżej:
10423: ndmp 10000 / tcp
10424: ndmp 10000 / udp
Pliki w folderach
Zamiast nazwy pliku możesz wstawić gwiazdkę za poleceniem grep. Ponownie używając kryteriów gnu, polecenie wygląda następująco: $ grep gnu *, a dane wyjściowe zawierają listę plików zawierających gnu . Ważne jest, aby pamiętać, że tego rodzaju polecenie zwraca wiersz.
Uwaga: W przypadku grep linia odnosi się do sekwencji znaków, które biegną do określonego podziału. O ile nie sprecyzujesz wyszukiwania, dane wyjściowe mogą zawierać całe akapity informacji.
Z Grepem wykonaj kolejny krok
Ten przewodnik po prostu rysuje powierzchnię tego, co możesz zrobić z grep. Zdobycie wszystkich szans i punktów może trochę potrwać, ale składnia jest zgodna z dość prostą zasadą. Po pewnym ćwiczeniu będziesz w stanie dopracować swoje wyszukiwanie do perfekcji, z nazwą pliku lub bez.