20 Gagnleg egrep stjórnunardæmi í Linux


Stutt: Í þessari handbók munum við ræða nokkur hagnýt dæmi um egrep skipunina. Eftir að hafa fylgst með þessari handbók munu notendur geta framkvæmt textaleit á skilvirkari hátt í Linux.

Hefur þú einhvern tíma verið svekktur vegna þess að þú getur ekki fundið nauðsynlegar upplýsingar í annálunum? Að vinna nauðsynlegar upplýsingar úr stóru gagnasafni er flókið og tímafrekt verkefni.

Hlutirnir verða mjög krefjandi ef stýrikerfið býður ekki upp á réttu verkfærin og hér kemur Linux til að bjarga þér. Linux býður upp á ýmis textasíunartól eins og sed, cut o.fl.

Hins vegar er egrep eitt öflugasta og algengasta tólið fyrir textavinnslu í Linux og við ætlum að ræða nokkur dæmi um egrep skipunina.

egrep skipunin í Linux er viðurkennd af fjölskyldu grep skipunarinnar, sem er notuð til að leita og passa við ákveðið mynstur í skrám. Það virkar svipað og grep -E (grep Extended regex), en það leitar aðallega í tiltekinni skrá eða jafnvel línur til að lína eða prentar línuna í viðkomandi skrá.

Setningafræði egrep skipunarinnar er sem hér segir:

$ egrep [OPTIONS] PATTERNS [FILES]

Við skulum búa til sýnishorn af textaskrá með eftirfarandi innihaldi til að nota dæmi:

$ cat sample.txt

Hér getum við séð að textaskráin er tilbúin. Nú skulum við ræða nokkur algeng dæmi sem hægt er að nota daglega.

Byrjum á einföldu dæmi um mynstursamsvörun, þar sem við getum notað skipunina hér að neðan til að leita að streng professional í sample.txt skrá:

$ egrep professionals sample.txt

Hér getum við séð að skipunin prentar línuna sem inniheldur tilgreint mynstur.

Við getum gert úttakið upplýsandi með því að auðkenna samsvarandi mynstur. Til að ná þessu getum við notað --color valmöguleikann í egrep skipuninni. Til dæmis mun skipunin hér að neðan auðkenna textann fagmenn í rauðum lit:

$ egrep --color=auto professionals sample.txt

Hér getum við séð að sama framleiðsla er upplýsandi miðað við þann fyrri. Einnig getum við auðveldlega greint að orðið fagmenn sé endurtekið tvisvar.

Á flestum Linux kerfum er ofangreind stilling virkjuð sjálfgefið með því að nota eftirfarandi samnefni:

$ alias egrep='egrep –color=auto'

egrep skipunin samþykkir margar skrár sem rök, sem gerir okkur kleift að leita að ákveðnu mynstri í mörgum skrám. Við skulum skilja þetta með dæmi.

Fyrst skaltu búa til afrit af sample.txt skránni:

$ cp sample.txt sample-copy.txt

Leitaðu nú í mynstur fagfólks í báðum skrám:

$ egrep professionals sample.txt sample-copy.txt 

Í dæminu hér að ofan getum við séð skráarnafnið í úttakinu, sem táknar samsvarandi línu úr þeirri skrá.

Stundum þurfum við bara að komast að því hvort mynstrið sé til staðar í skránni eða ekki. Ef já, í hversu mörgum línum er það til staðar? Í slíkum tilvikum getum við notað -c valkostinn í skipuninni.

Til dæmis mun skipunin hér að neðan sýna 1 sem úttak vegna þess að orðið fagmenn er aðeins til staðar í einni línu.

$ egrep -c professionals sample.txt

1

Í fyrra dæminu sáum við að -c valkosturinn telur ekki fjölda tilvika mynstrsins. Til dæmis, orðið fagmenn birtist tvisvar í sömu línu en -c valkosturinn lítur á það sem eina samsvörun.

Í slíkum tilfellum getum við notað -o valkostinn í skipuninni til að prenta aðeins samsvarandi mynstur. Til dæmis mun skipunin hér að neðan sýna orðið fagmenn á tveimur aðskildum línum:

$ egrep -o professionals sample.txt

Nú skulum við telja línurnar með wc skipuninni:

$ egrep -o professionals sample.txt | wc -l

Í dæminu hér að ofan höfum við notað samsetningu egrep og wc skipana til að telja fjölda tilvika tiltekins mynsturs.

Sjálfgefið er að egrep framkvæmir mynstursamsvörun á hástafanæman hátt. Það þýðir orð - farið er með okkur, við, við og VIÐ sem ólík orð. Hins vegar getum við framfylgt leitinni sem er há- og hástafaónæmir með því að nota -i valkostinn.

Til dæmis, í skipuninni hér að neðan mun mynstursamsvörun heppnast fyrir textann við og Við:

$ egrep -i we sample.txt 

Í fyrra dæminu sáum við að egrep skipunin framkvæmir samsvörun að hluta. Til dæmis, þegar við leituðum að textanum we þá tókst mynstursamsvörun einnig fyrir aðra texta. Svo sem vefur, vefsíða og voru.

Til að yfirstíga þessa takmörkun getum við valmöguleikann -w, sem framfylgir samsvörun allra orða.

$ egrep -w we sample.txt

Hingað til notuðum við egrep skipunina til að prenta línurnar þar sem tiltekið mynstur er til staðar. Hins vegar viljum við stundum framkvæma aðgerðina á öfugan hátt.

Til dæmis gætum við viljað prenta línurnar þar sem uppgefið mynstur er ekki til staðar. Við getum náð þessu með hjálp -v valmöguleikans:

$ egrep -v we sample.txt

Hér getum við séð að skipunin prentar alla línuna sem inniheldur ekki textann við.

Við getum notað -n valkostinn í skipuninni til að virkja línunúmerun, sem sýnir línunúmerið í úttakinu þegar mynstursamsvörun tekst. Þetta einfalda bragð gerir úttakið þýðingarmeira.

$ egrep -n professionals sample.txt

Í úttakinu hér að ofan getum við séð að orðið fagmenn er til staðar í 5. línu.

Í hljóðlátri stillingu prentar egrep skipunin ekki samsvarandi mynstur. Þannig að við verðum að nota afturgildi skipunarinnar til að bera kennsl á hvort mynstursamsvörun hafi tekist eða ekki.

Við getum notað -q valmöguleikann í skipuninni til að virkja hljóðláta stillinguna, sem kemur sér vel þegar þú skrifar skeljaforskriftir.

$ egrep -q professionals sample.txt
$ egrep -q non-existing-pattern sample.txt

Í þessu dæmi gefur núllskilagildið til kynna tilvist mynstursins en gildið sem er ekki núll gefur til kynna fjarveru mynstrsins.

Stundum er skynsamlegt að sýna nokkrar línur í kringum samsvarandi mynstur. Fyrir slíkar aðstæður getum við notað -B valmöguleikann í skipuninni, sem sýnir N línur á undan samsvarandi mynstri.

Til dæmis mun skipunin hér að neðan prenta línuna sem mynstursamsvörunin heppnast sem og 2 línur á undan henni.

$ egrep -B 2 -n professionals sample.txt 

Í þessu dæmi höfum við notað -n valkostinn til að sýna línunúmer.

Á svipaðan hátt getum við notað -A valkostinn í skipuninni til að birta línur eftir mynstursamsvörun. Til dæmis mun skipunin hér að neðan prenta línuna sem mynstursamsvörunin heppnast sem og næstu 2 línur.

$ egrep -A 2 -n professionals sample.txt

Að auki styður egrep skipunin -C valmöguleikann sem sameinar virkni valkostanna -A og -B, sem sýnir línur fyrir og eftir samsvarandi mynstur.

$ egrep -C 2 -n professionals sample.txt 

Eins og áður hefur verið rætt um, getum við framkvæmt mynstursamsvörun á mörgum skrám. Hins vegar verður staðan erfið þegar skrár eru til staðar undir mörgum undirmöppum og við sendum þær allar sem skipunarrök.

Í slíkum tilfellum getum við framkvæmt mynstursamsvörun á endurkvæman hátt með því að nota -r valkostinn eins og sýnt er í eftirfarandi dæmi.

Fyrst skaltu búa til 2 undirmöppur og afrita sample.txt skrána inn í þær:

$ mkdir -p dir1/dir2
$ cp sample.txt dir1/
$ cp sample.txt dir1/dir2/

Nú skulum við framkvæma leitaraðgerðina á endurkvæman hátt:

$ egrep -r professionals dir1

Í dæminu hér að ofan getum við séð að mynstursamsvörunin tókst fyrir dir1/dir2/sample.txt og dir1/sample.txt skrárnar.

Við getum notað punkta (.) staf til að passa við hvern einasta staf nema fyrir enda línunnar. Til dæmis passar regluleg tjáning hér að neðan við textann har, hatt og hefur:

$ egrep "ha." sample.txt

Við getum notað stjörnuna (*) til að passa við núll eða fleiri tilvik af fyrri staf. Til dæmis, regluleg segð hér að neðan passar við texta sem inniheldur streng we sem fylgt er eftir með núll eða fleiri tilfellum af stafnum b.

$ egrep "web*" sample.txt

Við getum notað plús (+) til að passa við eitt eða fleiri tilvik af fyrri stafnum. Til dæmis passar reglulega segðin hér að neðan við textann sem inniheldur strenginn we á eftir að minnsta kosti einu tilviki af stafnum b.

$ egrep "web+" sample.txt

Hér getum við séð að mynstursamsvörun heppnast ekki fyrir orðin - við og vorum, vegna fjarveru á stafnum b.

Við getum notað merkið (^) til að tákna upphaf línunnar. Til dæmis prentar reglulega segðin hér að neðan línurnar sem byrja á textanum Við:

$ egrep "^We" sample.txt

Við getum notað dollarann ($) til að tákna enda línunnar. Til dæmis prentar reglulega segðin hér að neðan línurnar sem enda á textanum e.:

$ egrep "e.$" sample.txt

Við getum notað merkið (^) strax á eftir dollaranum ($) til að tákna tómu línuna. Við skulum nota þetta í venjulegri tjáningu til að fjarlægja tómar línur:

$ egrep -n -v "^$" sample.txt

Í úttakinu hér að ofan getum við séð að línunúmer 2, 4, 6, 8 og 10 birtast ekki þar sem þær eru tómar.

Í þessari grein ræddum við nokkur gagnleg dæmi um egrep skipanirnar. Hægt er að nota þessi dæmi í daglegu lífi til að bæta framleiðni.

Veistu um annað besta dæmi um egrep skipunina í Linux? Láttu okkur vita af skoðunum þínum í athugasemdunum hér að neðan.