Primer 1: Iskanje določenega niza v datoteki
To je najpogostejša uporaba ukaza egrep. Naredite tako, da določite niz, ki ga želite iskati, in ime datoteke, v kateri želite iskati ta niz. Rezultat nato prikaže celotno vrstico, ki vsebuje iskani niz.
Sintaksa:
$ egrep ime_datoteke "search_string"Primer:
$ egrep debian vzorčna datoteka.txtV tem primeru sem v navedeni besedilni datoteki iskal besedo »debian«. Ogledate si lahko, kako rezultati prikažejo celotno vrstico, ki vsebuje besedo “debian”:
2. primer: Iskanje določenega niza v več datotekah
Z ukazom egrep lahko iščete niz med več datotekami, ki se nahajajo v istem imeniku. Pri določanju »vzorca« za iskane datoteke morate biti le nekoliko natančnejši. To bo postalo bolj jasno s primerom, ki ga bomo predstavili.
Sintaksa:
$ egrep "search_string" ime_vzorca datotekePrimer:
Tu bomo iskali besedo "debian" v vseh jezikih .datoteke txt z določitvijo vzorca imena datoteke, kot sledi:
$ egrep “debian” *.txt
Ukaz je natisnil vse vrstice, skupaj z imeni datotek, ki vsebujejo besedo "debian" iz vseh datotek .datoteke txt v trenutnem imeniku.
3. primer: rekurzivno iskanje niza v celotnem imeniku
Ko želite iskati niz v vseh datotekah iz imenika in njegovih podimenikov, lahko to storite z uporabo zastavice -r z ukazom egrep.
Sintaksa:
$ egrep -r "search_string" *Primer:
V tem primeru iščem besedo "sample" v datotekah celotnega trenutnega imenika (Downloads).
$ egrep -r "vzorec" *
Rezultati vsebujejo vse vrstice, skupaj z imeni datotek, ki vsebujejo besedo »vzorec« iz vseh datotek v imeniku Prenosi in njegovih podimenikih.
Primer 4: Izvedba iskanja, ki ne razlikuje med velikimi in malimi črkami
Z zastavico -i lahko z ukazom egrep natisnete rezultate na podlagi iskalnega niza, ne da bi vam bilo treba skrbeti za njegov primer.
Sintaksa:
$ egrep -i ime datoteke "search_string"Primer:
Tu iščem besedo “debian” in želim, da se v rezultatih prikažejo vse vrstice iz datoteke, ki vsebujejo besedo “debian” ali “Debian, ne glede na njen primer.
$ egrep -i ime datoteke "search_string"
Ogledate si lahko, kako mi je zastavica -i pomagala pri pridobivanju vseh vrstic, ki vsebujejo iskalni niz, skozi "neobčutljivo" iskanje.
Primer 5: Iskanje niza kot celotne besede in ne kot podniza
Ko običajno iščete niz prek egrepa, natisne vse besede, ki vsebujejo niz, kot podniz. Če na primer poiščemo niz »on«, bodo natisnjene vse besede, ki vsebujejo niz »on«, na primer »on«, »only«, »monitor«, »clone« itd. Če želite, da rezultati prikazujejo samo besedo "on" kot celotno besedo in ne kot podniz, lahko uporabite zastavico -w z egrep.
Sintaksa:
$ egrep -w ime datoteke "search_string"Primer:
Tu iščem niz »on« v vzorčni datoteki:
$ egrep -i “on” samplefile.txt
V zgornjem izhodu lahko vidite, da vsebuje tudi besedo »samo«. Vendar to ni tisto, kar si želim, saj iščem izključno besedo "on". Torej, to je ukaz, ki ga bom raje uporabil:
$ egrep -iw “on” samplefile.txt
Zdaj moji rezultati iskanja vključujejo samo vrstice, ki vsebujejo besedo "on" kot celotno besedo.
Primer 6: Tiskanje samo imen datotek, ki vsebujejo niz
Včasih želimo le pridobiti imena datotek, ki vsebujejo določen niz, namesto da bi natisnili vrstice, ki ga vsebujejo. To lahko storite z uporabo zastavice -l (male črke L) z ukazom egrep.
Sintaksa:
$ egrep -l "vzorec_izvedbe" ime_vzorca datotekePrimer:
Tu iščem niz »vzorec« v vseh .datoteke txt v trenutnem imeniku:
$ egrep -l vzorec *.txt
Rezultati iskanja natisnejo samo imena datotek, ki vsebujejo določen niz.
7. primer: Tiskanje samo iskalnega niza iz datoteke
Namesto da natisnete celotno vrstico, ki vsebuje iskalni niz, lahko z ukazom egrep natisnete niz. Niz se natisne, kolikokrat se pojavi v določeni datoteki.
Sintaksa:
$ egrep -o ime datoteke "search_string"Primer:
V tem primeru iščem besedo "To" v svoji datoteki.
$ egrep -o Ta vzorčna datoteka_.txt
Opomba: Ta uporaba ukaza je priročna, ko iščete niz, ki temelji na vzorcu regularnega izraza. Regularne izraze bomo podrobno razložili v enem od naslednjih primerov.
Primer 8: Prikaz n števila vrstic pred, za ali okoli iskalnega niza
Včasih je zelo pomembno poznati kontekst v datoteki, kjer se uporablja določen niz. Egrep je priročen v smislu, da se z njim lahko prikaže vrstica, ki vsebuje iskalni niz, in tudi določeno število vrstic pred, za in okoli njega.
To je vzorčna besedilna datoteka, ki jo bom uporabil za razlago prihodnjih primerov:
N število vrstic Po iskalnem nizu:
Uporaba zastavice A na naslednji način bo prikazala vrstico, ki vsebuje iskalni niz in N število vrstic za njim:
$ egrep -APrimer:
$ egrep -A 2 "sample" samplefile.txt
N število vrstic pred iskalnim nizom:
Uporaba zastavice B na naslednji način bo prikazala vrstico, ki vsebuje iskalni niz in N število vrstic pred njim:
$ egrep -BPrimer:
$ egrep -B 2 "sample" samplefile.txt
N število vrstic pred iskalnim nizom:
Uporaba zastavice C na naslednji način bo prikazala vrstico, ki vsebuje iskalni niz, in N število vrstic pred in za njim:
$ egrep -CPrimer:
$ egrep -C 2 "sample" samplefile.txt
Primer 9: Ujemanje regularnega izraza v datotekah
Ukaz egrep postane močnejši, ko iščete regularne izraze namesto trdnih iskalnih nizov v datoteki.
Sintaksa:
$ egrep "RegularExpressions" ime datotekePojasnite nam, kako lahko pri iskanju egrep uporabljate regularne izraze:
Operator ponavljanja | Uporaba |
? | Prejšnja točka prej ? ni obvezna in se ujema največ enkrat
|
* | Prejšnji element pred * se bo ujemal nič ali večkrat |
+ | Prejšnji element pred + se bo ujemil enkrat ali večkrat |
n | Prejšnji element se natančno ujema n-krat. |
n, | Prejšnji element se ujema n ali večkrat |
, m | Prejšnji element se ujema največ m-krat |
n, m | Prejšnji element se ujema vsaj n-krat, vendar ne več kot m-krat |
Primer:
V naslednjem primeru se ujemajo vrstice, ki vsebujejo naslednji izraz:
začenši z “Gnome” in konča na “programi”
Primer 10: Označevanje iskalnega niza
Ko spremenljivko okolja GREP_OPTIONS nastavite spodaj, dobite izhod z iskalnim nizom / vzorcem, označenim v rezultatih:
$ sudo export GREP_OPTIONS = '- color = auto' GREP_COLOR = '100; 8'Nato lahko niz poiščete na kakršen koli način, ki smo ga opisali v primerih tega članka.
Primer 11: Izvajanje invertiranega iskanja v datoteki
Z invertiranim iskanjem mislimo, da ukaz egrep natisne vse v datoteki, razen vrstic, ki vsebujejo iskalni niz. Naslednjo vzorčno datoteko bomo uporabili za razlago invertnega iskanja prek egrepa. Vsebino datoteke smo natisnili z ukazom cat:
Sintaksa:
$ egrep -v ime datoteke "search_string"Primer:
Iz vzorčne datoteke, ki smo jo omenili, želimo v izhodu izpustiti vrstico, ki vsebuje besedo "dva", zato bomo uporabili naslednji ukaz:
$ egrep -v "dva" samplefile_.txt
Vidite lahko, kako izhod vsebuje vse iz vzorčne datoteke, razen druge vrstice, ki je vsebovala iskalni niz »dva«.
Primer 12: Izvedba obrnjenega iskanja na podlagi več meril / vzorca iskanja
Z zastavico -v lahko naredite tudi ukaz egrep za izvajanje obrnjenega iskanja na podlagi več kot enega iskalnega niza / vzorca.
Za razlago tega scenarija bomo uporabili isto vzorčno datoteko, ki smo jo omenili v primeru 11.
Sintaksa:
$ egrep -v -e "search_string" / ”vzorec” -e "search_string" / ”vzorec”… Ime datoteke
Primer:
Iz vzorčne datoteke, ki smo jo omenili, želimo v izhodu izpustiti vrstice, ki vsebujejo besedi "ena" in "dve", zato bomo uporabili naslednji ukaz:
$ egrep -v -e “one” -e “two” samplefile_.txtZ zastavico -e smo navedli dve besedi, ki ju bomo izpustili, zato bo rezultat prikazan na naslednji način:
Primer 13: Tiskanje števila vrstic, ki se ujemajo z iskalnim nizom
Namesto da bi iskali iskani niz iz datoteke ali vrstic, ki jo vsebujejo, lahko z ukazom egrep preštejete in natisnete število vrstic, ki se ujemajo z nizom. To štetje je mogoče pridobiti z zastavico -c z ukazom egrep.
Sintaksa:
$ egrep -c ime datoteke "search_string"Primer:
V tem primeru bomo z zastavico -c prešteli število vrstic, ki vsebujejo besedo »To« v naši vzorčni datoteki:
$ egrep -c "To" ime datoteke
Tu lahko uporabite tudi funkcijo obrnjenega iskanja za štetje in tiskanje števila vrstic, ki ne vsebujejo iskalnega niza:
$ grep -v -c ime datoteke "search_string"
Primer 14: Prikaz številke vrstice, kjer se niz ujema
Z zastavico -n lahko naredite ukaz egrep za tiskanje ujemajoče se vrstice skupaj s številko vrstice, ki vsebuje iskalni niz.
Sintaksa:
$ grep -n ime datoteke "search_string"Primer:
$ grep -n "Ta" samplefile_.txt
Ogledate si lahko, kako so številke vrstic prikazane glede na rezultate iskanja.
Primer 15: Prikaz položaja v datoteki, kjer se iskalni niz ujema
Če želite vedeti položaj v datoteki, kjer obstaja iskalni niz, lahko uporabite zastavico -b z ukazom egrep.
$ grep -o -b "ime_izvedbe"Primer:
$ grep -o -b "Ta" samplefile_.txt
Rezultati iskanja natisnejo odmik bajta datoteke, v kateri obstaja iskalna beseda.To je bila podrobna uporaba ukaza egrep. S kombinacijo zastavic, razloženih v tem članku, lahko v datotekah izvedete bolj smiselna in zapletena iskanja.