12 Praktyczne przykłady polecenia Linux Grep
- 4297
- 579
- Igor Madej
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 PythonZnalezienie 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.
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 UPWydrukuj 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.GZWyszukaj 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!