12 Praktesch Beispiller vu Linux grep Kommando


Hutt Dir jeemools mat der Aufgab konfrontéiert no engem bestëmmte String oder Muster an engem Fichier ze sichen, awer hutt Dir keng Ahnung wou Dir sollt ufänken ze sichen? Ma dann, hei ass grep fir d'Rettung!

grep ass e mächtege Dateimuster Sicher deen op all Verdeelung vu Linux ausgestatt ass. Wann, aus irgendege Grënn, et net op Ärem System installéiert ass, kënnt Dir et einfach iwwer Äre Package Manager installéieren (apt-get op Debian/Ubuntu a yum op RHEL/CentOS/Fedora).

$ sudo apt-get install grep         #Debian/Ubuntu
$ sudo yum install grep             #RHEL/CentOS/Fedora

Ech hu festgestallt datt deen einfachste Wee fir Är Féiss mat Grep naass ze maachen ass just direkt an d'Tauch ze goen an e puer real Welt Beispiller ze benotzen.

1. Sich a Fannt Dateien

Loosst eis soen datt Dir just eng frësch Kopie vun der neier Ubuntu op Ärer Maschinn installéiert hutt, an datt Dir Python Scripting e Schéiss gitt. Dir hutt de Web gesicht fir Tutorials ze sichen, awer Dir gesitt datt et zwou verschidde Versioune vu Python am Gebrauch sinn, an Dir wësst net wéi eng op Ärem System vum Ubuntu Installateur installéiert gouf oder ob et Moduler installéiert huet. Fëllt einfach dëse Kommando aus:

# dpkg -l | grep -i python
ii  python2.7                        2.7.3-0ubuntu3.4                    Interactive high-level object-oriented language (version 2.7)
ii  python2.7-minimal                2.7.3-0ubuntu3.4                    Minimal subset of the Python language (version 2.7)
ii  python-openssl                   0.12-1ubuntu2.1                     Python wrapper around the OpenSSL library
ii  python-pam                       0.4.2-12.2ubuntu4                   A Python interface to the PAM library

Als éischt hu mir dpkg –l ausgefouert, déi installéiert *.deb Packagen op Ärem System lëscht. Zweetens hu mir deen Ausgang op grep -i python gepäift, déi einfache Staaten \goen op grep a filteren an alles mat 'Python' dran zréckginn. D'Optioun –i ass do fir de Fall ze ignoréieren, well grep ka-sensibel ass.D' –i Optioun ze benotzen ass eng gutt Gewunnecht fir anzegoen, ausser Dir probéiert natierlech eng méi spezifesch Sich nozegoen.

2. Sich a Filter Dateien

De grep kann och benotzt ginn fir an eenzel Dateien oder verschidde Dateien ze sichen an ze filteren. Loosst eis dëst Szenario huelen:

Dir hutt e puer Probleemer mat Ärem Apache Web Server, an Dir hutt op ee vun de ville genialen Foren um Netz erreecht fir Hëllef ze froen. Déi léif Séil déi Iech äntwert huet Iech gefrot den Inhalt vun Ärer /etc/apache2/sites-available/default-ssl Datei ze posten. Wär et net méi einfach fir Iech, de Guy deen Iech hëlleft, a jiddereen deen et liest, wann Dir all kommentéiert Zeilen ewechhuelt? Gutt, Dir kënnt! Run just dëst:

# grep –v “#”  /etc/apache2/sites-available/default-ssl

D'Optioun -v seet dem grep seng Ausgang ëmzedréinen, dat heescht datt amplaz passende Linnen ze drécken, de Géigendeel maachen an all d'Linnen drécken déi net mam Ausdrock passen, an dësem Fall déi # kommentéiert Linnen.

3. Fannt all .mp3 Dateien Nëmmen

De grep ka ganz nëtzlech si fir ze filteren aus stdout. Zum Beispill, loosst eis soen datt Dir e ganzen Dossier voller Museksdateien an enger Rëtsch vu verschiddene Formater hutt. Dir wëllt all *.mp3 Dateien vum Kënschtler JayZ fannen, awer Dir wëllt keng vun de remixed Tracks. Mat engem Find Kommando mat e puer grep Päifen wäert den Trick maachen:

# find . –name “*.mp3” | grep –i JayZ | grep –vi “remix”

An dësem Beispill benotze mir Find fir all d'Fichier'en mat enger *.mp3 Extensioun ze drécken, se op grep -i ze filteren an all Dateie mam Numm \JayZ ze drécken an dann eng aner Päif op grep –vi déi filtert eraus a dréckt net all Dateinumm mam String (op alle Fall) \remix aus.

4. Display Zuel vun Linnen virun oder no Sich String

Eng aner e puer Optiounen sinn d'-A an -B Schalter, déi déi ugepasste Linn an d'Zuel vun den Zeilen ugewisen entweder virun oder no der Sich String. Wärend d'Man-Säit eng méi detailléiert Erklärung gëtt, fannen ech et am einfachsten un d'Optiounen ze erënneren wéi -A = no, an -B = virun:

# ifconfig | grep –A 4 eth0
# ifconfig | grep  -B 2 UP

5. Dréckt Zuel vun Linnen ëm Match

D'grep's -C Optioun ass ähnlech, awer amplaz d'Zeilen ze drécken déi entweder virun oder no der String kommen, dréckt se d'Linnen an entweder Richtung:

# ifconfig | grep –C 2 lo

6. Grof Zuel vun Matcher

Ähnlech wéi d'Piping vun engem grep String op d'Wuertzuel (wc Programm) kann d'Grep's agebaute Optioun d'selwecht fir Iech maachen:

# ifconfig | grep –c inet6

7. Sich Fichier'en vun gitt String

D'-n Optioun fir grep ass ganz nëtzlech wann Dir Dateien während der Kompiléierungsfehler Debugging. Et weist d'Zeilnummer an der Datei vun der gegebener Sichstring:

# grep –n “main” setup..py

8. Sich eng String Rekursiv an all Verzeechnes

Wann Dir wëllt no engem String am aktuellen Verzeechnes zesumme mat all den Ënnerverzeechnunge sichen, kënnt Dir d'Optioun –r spezifizéieren fir rekursiv ze sichen:

# grep –r “function” *

9. Sicht fir de ganze Muster

Passéiere vun der -w Optioun fir grep sicht no dat ganzt Muster dat an der String ass. Zum Beispill benotzt:

# ifconfig | grep –w “RUNNING”

Dréckt d'Linn aus, déi d'Muster an Zitater enthält. Op der anerer Säit, wann Dir probéiert:

# ifconfig | grep –w “RUN”

Näischt gëtt zréckgezunn well mir net no engem Muster sichen, mee e ganzt Wuert.

10. Sich eng String an Gzipped Dateien

Verdéngt e puer Ernimmung sinn d'Derivate vum grep. Déi éischt ass zgrep, déi, ähnlech wéi zcat, ass fir gzipped Dateien ze benotzen. Et hëlt déiselwecht Optiounen wéi grep a gëtt op déiselwecht Manéier benotzt:

# zgrep –i error /var/log/syslog.2.gz

11. Match regelméisseg Ausdrock an Fichieren

Den egrep ass eng aner Derivat déi fir Extended Global Regular Expression steet. Et erkennt zousätzlech Ausdrock Meta-Charaktere wéi + ? | an().

egrep ass ganz nëtzlech fir Quelldateien ze sichen, an aner Stécker Code, wann et néideg ass. Et kann aus reguläre grep opgeruff ginn andeems Dir d'Optioun -E spezifizéiert.

# grep –E

12. Sich e Fixed Muster String

De fgrep sicht eng Datei oder eng Lëscht vu Dateien fir e fixe Musterstring. Et ass d'selwecht wéi grep -F. Eng gemeinsam Manéier fir fgrep ze benotzen ass eng Datei vu Mustere weiderzeginn:

# fgrep –f file_full_of_patterns.txt file_to_search.txt

Dëst ass just e Startpunkt mat grep, awer wéi Dir wahrscheinlech gesitt, ass et wäertvoll fir verschidden Zwecker. Nieft den einfachen Zeilbefehle, déi mir implementéiert hunn, kann grep benotzt ginn fir mächteg Cron Jobs ze schreiwen, a robust Shell-Skripte, fir e Start.

Sidd kreativ, experimentéiert mat den Optiounen an der Man-Säit, a kommt mat grep Ausdrock op, déi Är eegen Zwecker déngen!