12 Praktyczne przykłady polecenia Linux Grep

12 Praktyczne przykłady polecenia Linux Grep

Czy kiedykolwiek spotkałeś się z zadaniem poszukiwania określonego ciągu lub wzoru w pliku, ale nie masz pojęcia, gdzie zacząć szukać? Cóż, oto jest Grep na pomoc!

Grep to potężny wyszukiwarka wzorów plików, który jest wyposażony w każdy rozkład Linux. Jeśli z jakiegokolwiek powodu nie jest zainstalowany w systemie, możesz łatwo zainstalować go za pośrednictwem menedżera pakietów, jak pokazano.

$ sudo apt instal grep [on Debian, Ubuntu i Mint] $ sudo yum instaluj grep [on RHEL/CENTOS/FEDORA I Rocky Linux/Almalinux] $ sudo emerge -a sys -apps/grep [on Gentoo Linux] $ sudo apk dodaj grep [on Alpine Linux] $ sudo pacman -s grep [on Arch Linux] $ sudo zyper instaluj grep [on OpenSuse] 

Odkryłem, że najłatwiejszy sposób na zmoczenie stóp polecenie GREP jest po prostu zanurzyć się i użyć niektórych rzeczywistych przykładów.

1. Wyszukaj i znajdź pliki w Linux

Powiedzmy, że właśnie zainstalowałeś świeżą kopię nowego Ubuntu na twojej maszynie i że zamierzasz dać Pyton Scenariusz strzału.

Przeszukiwałeś sieć w poszukiwaniu samouczków, ale widzisz, że istnieją dwie różne wersje Pyton w użyciu, a nie wiesz, która wersja Pythona jest instalowana na Ubuntu przez instalator lub jeśli zainstalował jakiekolwiek moduły.

Po prostu uruchom następujące polecenie DPKG z Grep jak pokazano:

# dpkg -l | Grep -i Python
Znalezienie plików za pomocą polecenia GREP
II libpython3-stdlib: AMD64 3.8.2-0UBUNTU2 AMD64 Interactive wysoki poziom obiektowy język (domyślna wersja Python3) ii libpython3.8: AMD64 3.8.10-0ubuntu1 ~ 20.04.5 AMD64 Udostępniona biblioteka środowiska wykonawczego Python (wersja 3.8) ii libpython3.8-minimalne: AMD64 3.8.10-0ubuntu1 ~ 20.04.5 minimalny podzbiór języka Pythona (wersja 3.8) ii libpython3.8-Stdlib: AMD64 3.8.10-0ubuntu1 ~ 20.04.5 AMD64 Interactive na wysokim poziomie zorientowanym na obiekty (standardowa biblioteka, wersja 3.8) II Python-Aapt-common 2.0.0ubuntu0.20.04.8 Wszystkie interfejs Python do libapt-pkg (lokalizacje) ii Python3 3.8.2-0UBUNTU2 AMD64 Interaktywny język obiektowy wysokiego poziomu (domyślna wersja Python3) II Python3-Apport 2.20.11-0ubuntu27.24 All Python 3 Library for Apress Crash Raport Prowadzenie II Python3-Act 2.0.0ubuntu0.20.04.8 interfejs AMD64 Python 3 do libapt-pkg ii Python3-Apptdaemon 1.1.1+BZR982-0UBUNTU32.3 Wszystkie moduły Python 3 dla serwera i klienta Aptdaemon II Python3-Apptdaemon.GTK3Widgets 1.1.1+BZR982-0UBUNTU32.3 Wszystkie widżety Python 3 GTK+ 3 do uruchomienia klienta Aptdaemon II Python3-Blinker 1.4+DFSG1-0.3ubuntu1 Wszystkie szybkie, proste obiekt-obiekt i transmisja biblioteka sygnalizacyjna II Python3-Brlapi: AMD64 6.0+DFSG -4UBUNTU6 AMD64 Braille Dostęp dostępu przez BRLTTY - PITHON3 Wiązania… 

Najpierw prowadziliśmy dpkg -l, które listy zainstalowane *.Deb pakiety w twoim systemie. Po drugie, skierowaliśmy to wyjście grep -i Python, który po prostu stwierdza: „idź do grepa i odfiltruj i zwróć wszystko”pyton' w tym."

-I Opcja jest ignorowana, jak Grep jest wrażliwe na przypadek. Używając -I Opcja jest dobrym nawykiem wchodzenia, chyba że, oczywiście, próbujesz zdobić bardziej szczegółowe wyszukiwanie.

2. Wyszukaj i filtruj pliki w Linux

Grep może być również używane do wyszukiwania i filtrowania w poszczególnych plikach lub wielu plikach. Weźmy ten scenariusz:

Masz problemy ze swoim Apache Serwer WWW, I dotarłeś do jednego z wielu niesamowitych forów w sieci, prosząc o pomoc.

Miła dusza, która ci odpowiada, poprosiła cię o opublikowanie zawartości twojej /etc/apache2/apache2.conf plik. Czy nie byłoby to dla ciebie łatwiejsze, facet, który ci pomaga i wszyscy czytają, gdybyś mógł usunąć wszystkie skomentowane wiersze? Cóż, możesz! Po prostu uruchom to:

# grep -v ^\#/etc/apache2/apache2.Conf | Grep . 

-v Opcja mówi Grep Aby odwrócić swoje dane wyjściowe, co oznacza, że ​​zamiast drukować pasujące linie, wykonaj przeciwne i wydrukuj wszystkie linie, które nie pasują do wyrażenia, w tym przypadku # skomentował linie.

Zauważ, że użyliśmy również Grep . na końcu, aby ukryć wyjście wszystkich pustych linii. W ten sposób widzimy tylko ustawienia konfiguracji w naszym terminalu.

Wydrukuj zawartość pliku, wykluczając komentarze i puste wiersze
Defaultruntimedir $ apache_run_dir pidfile $ apache_pid_file limit czasu 300 keepAlive na maxkeepaliverequests 100 keepAliveTimeout 5 użytkownika $ apache_run_user grupa $ apache_run_group hostNamEloUps errbeLog $ apache_log_dir/błąd/błąd/błąd/błąd/błąd/błąd/błąd.Log Log LEVEVEL OSTRZEŻENIE DOTYCZĄCE MODY-MODY-WESTAW/*.Obciążenie obejmują MODS-obsługę/*.Conf obejmują porty.Opcje COND obserwuje Symlinks Upewnianie się None wymagają wszystkiego odmówionego  

3. Znajdź wszystko .Pliki MP3 w Linux

Grep może być bardzo przydatne do filtrowania z Stdout. Powiedzmy na przykład, że masz cały folder pełen plików muzycznych w wielu różnych formatach.

Chcesz znaleźć wszystkie *.MP3 Pliki od artysty Jay Z, Ale nie chcesz żadnego z remiksowanych utworów. Używać Znajdź polecenie z kilkoma Grep Rury załatwi sprawę:

# znajdować . -nazwa "*.mp3 ”| Grep -i Jayz | grep -vi „remiks” 

W tym przykładzie używamy znajdować Aby wydrukować wszystkie pliki z *.MP3 przedłużenie, prowadzenie do grep -i Aby odfiltrować i wydrukować wszystkie pliki o nazwie „Jay Z”A potem kolejna fajka GREP -VI który filtruje i nie drukuje wszystkich nazw plików z łańcuchem (w każdym razie) ”remiks".

[Może się również polubił: 35 praktycznych przykładów Linux Znajdź polecenie]

4. Wyświetl liczbę linii przed lub po ciągu wyszukiwania

Kolejne kilka opcji to -A I -B przełączniki, które wyświetlają dopasowaną linię i liczbę linii, które są przed lub po ciągu wyszukiwania.

Podczas gdy strona mężczyzny zawiera bardziej szczegółowe wyjaśnienie, najłatwiej jest zapamiętać opcje jako -A = Po, I -B = zanim:

# ifconfig | GREP -A 4 INET # ifconfig | GREP -B 2 UP 
Wydrukuj liczbę linii przed i po ciągu

5. Wydrukuje liczbę linii wokół dopasowania

Grep -C Opcja jest podobna, ale zamiast drukowania linii, które pojawiają się przed lub po ciągu, drukuje linie w dowolnym kierunku:

# ifconfig | grep -c 2 lo Błędy TX 0 Upadło 0 Przekroczy 0 Nośnik 0 zderzenia 0 Lo: Flagi = 73 MTU 65536 INET 127.0.0.1 Mash Network 255.0.0.0 INET6 :: 1 prefixlen 128 ScopeID 0x10 pętla txqueuelen 1000 (Lokalna pętla) pakiety Rx 15314 bajtów 1593769 (1.5 MB) RX Błędy 0 Zrzucone 0 Overruns 0 Ramka 0 

6. Policz liczbę dopasowań

Podobne do rurociągi Grep Wbudowana opcja GREP (polecenie WC) (polecenie WC) może wykonać to samo dla Ciebie:

# ifconfig | GREP -C INET6

7. Wyszukaj pliki według danych w Linux

-N opcja dla Grep jest bardzo przydatne podczas debugowania plików podczas błędów kompilacji. Wyświetla numer linii w pliku podanego ciągu wyszukiwania:

# grep -n „główny” konfiguracja.py

8. Wyszukaj ciąg rekurencyjnie we wszystkich katalogach

Jeśli chcesz wyszukać ciąg w bieżącym katalogu wraz ze wszystkimi podlokatorami, możesz określić -R opcja wyszukiwania rekurencyjnego:

# grep -r „funkcja” * 

9. Wyszukaj cały wzór

Mijanie -w Opcja do GREP wyszukiwa cały wzór, który znajduje się w ciągu. Na przykład użycie:

# ifconfig | grep -w „bieganie”

Wydrukuje linię zawierającą wzór w cytatach. Z drugiej strony, jeśli spróbujesz:

# ifconfig | grep -w „biegaj”
Znajdź cały wzór

Nic nie zostanie zwrócone, ponieważ nie szukamy wzorca, ale całe słowo.

10. Wyszukaj ciąg w plikach gzipped

Zasługując na pewne wzmianki to pochodne Grepa. Pierwszy jest Zgrep, który, podobnie jak Zcat, służy do użytku gzed akta. Wymaga tych samych opcji co Grep i jest używany w ten sam sposób:

# zgrep -i błąd/var/log/syslog.2.GZ 
Wyszukaj ciąg w plikach gzipped

11. Dopasuj wyrażenia regularne w plikach

Polecenie Egrep to kolejna pochodna, która oznacza „Rozszerzona globalna ekspresja regularna". Rozpoznaje dodatkowe wyrażenie meta-właściciela takie Na + ? | I ().

[Możesz także polubił: jaka jest różnica między GREP, EGREP i FGREP w Linux? ]

Egrep jest bardzo przydatny do wyszukiwania plików źródłowych i innych elementów kodu, jeśli pojawia się potrzeba. Można go powołać z regularnych Grep określając -mi opcja.

# grep -e 

12. Wyszukaj stały ciąg wzoru

FGREP wyszukuje plik lub listę plików w poszukiwaniu stałego ciągu wzoru. Jest to samo co grep -f. Powszechny sposób użycia FGREP jest przekazanie do niego pliku wzorów:

# fgrep -f file_full_of_patterns.txt file_to_search.tekst

To tylko punkt wyjścia z Grep, Ale jak prawdopodobnie możesz zobaczyć, jest to nieocenione do różnych celów. Oprócz prostych poleceń jednoladowych, które zaimplementowaliśmy, Grep można użyć do pisania potężnego Cron Praca i solidne Skrypty powłoki, na początek.

[Możesz także polubił: 11 zaawansowanych poleceń „Grep” Linuxa na klasach postaci i wyrażeniach wsporników]

Bądź kreatywny, eksperymentuj z opcjami na Strona Man, I wymyśl wyrażenia grep które służą własnym celom!