Dæmi um notkun Linux grep stjórn

Kynning

Linux grep stjórnin er notuð sem aðferð til að sía inntak.

GREP stendur fyrir Global Regular Expression Printer og því til þess að nota það á áhrifaríkan hátt, ættir þú að hafa einhverja þekkingu á reglulegum segðum.

Í þessari grein mun ég sýna þér nokkur dæmi sem hjálpa þér að skilja grep stjórnina.

01 af 09

Hvernig á að leita að strengi í skrá með GREP

Linux grep stjórnin.

Ímyndaðu þér að þú hafir textaskrá sem heitir bækur með bókatölum eftirfarandi barna:

Til að finna allar bækur með orðið "The" í titlinum sem þú notar eftirfarandi setningafræði:

grep Bækurnar

Eftirfarandi niðurstöður verða skilað:

Í hverju tilviki verður orðið "The" auðkennd.

Athugaðu að leitin er svoleiðis svo að ef einn af titlinum hefði "í" í staðinn fyrir "The" þá hefði það ekki verið skilað.

Til að hunsa málið geturðu bætt eftirfarandi skipti:

greip bækurnar -

Þú getur líka notað -i rofið sem hér segir:

grep -í bækurnar

02 af 09

Leita að strengi í skrá með Wildcards

Grep stjórnin er mjög öflugur. Þú getur notað margs konar samsvörunaraðferðir til að sía niðurstöður.

Í þessu dæmi mun ég sýna þér hvernig á að leita að strengi í skrá með wildcards .

Ímyndaðu þér að þú hafir skrá sem heitir staðir með eftirfarandi skoska staðarnetum:

aberdeen

aberystwyth

aberlour

inverurie

inverness

Newburgh

ný dádýr

ný galloway

glasgow

edinburgh

Ef þú vilt finna allar staði með inver í nafninu skaltu nota eftirfarandi setningafræði:

grep inver * stöðum

Stjörnuspjaldið (*) táknar 0 eða mörg. Því ef þú ert með stað sem kallast inver eða staður sem kallast inverness þá báðir myndu vera skilað.

Annar wildcard sem þú getur notað er tímabilið (.). Þú getur notað þetta til að passa við eitt staf.

grep inver.r stöðum

Ofangreind skipun myndi finna staði sem kallast inverurie og inverary en myndi ekki finna invereerie vegna þess að það er aðeins hægt að vera eitt jógakort milli tveggja rs eins og táknað er af einu tímabilinu.

Tímabilið fyrir wildcardið er gagnlegt en það getur valdið vandræðum ef þú ert með einn sem hluta af textanum sem þú leitar.

Til dæmis líta á þennan lista yfir lén

Til að finna allar um.coms geturðu bara leitað með eftirfarandi setningafræði:

grep * um * kennileiti

Ofangreind skipun myndi falla niður ef listinn innihélt eftirfarandi heiti í því:

Þú getur því reynt eftirfarandi setningafræði:

grep * um.com kennitala

Þetta myndi virka í lagi nema að það væri lén með eftirfarandi nafni:

umycom.com

Til að virkilega leita að hugtakinu about.com þú þarft að flýja punktinum sem hér segir:

grep * um \ .com nafnorð

Endanleg wildcard til að sýna þér er spurningamerki sem stendur fyrir núll eða einn staf.

Til dæmis:

grep? ber placenames

Ofangreind stjórn myndi skila aberdeen, aberystwyth eða jafnvel berwick.

03 af 09

Leita að strengjum við upphaf og lok lína með grep

The karat (^) og dollara ($) táknið leyfir þér að leita að mynstri í upphafi og lok lína.

Ímyndaðu þér að þú hafir skrá sem kallast fótbolti með eftirfarandi nöfnum:

Ef þú vildir finna öll liðin sem byrjuðu með Manchester myndi þú nota eftirfarandi setningafræði:

Grep ^ Manchester lið

Ofangreind stjórn myndi skila Manchester City og Manchester United en ekki FC United Of Manchester.

Einnig er hægt að finna öll liðin sem ljúka við United með eftirfarandi setningafræði:

grep United $ lið

Ofangreind stjórn myndi skila Manchester United og Newcastle United en ekki FC United Of Manchester.

04 af 09

Telja fjölda passa með grep

Ef þú vilt ekki skila raunverulegum línum sem passa við mynstur með grep en þú vilt bara vita hversu margir það eru sem þú getur notað eftirfarandi setningafræði:

grep-c mynstur innsláttarskrá

Ef mynsturið var passað tvisvar þá var númerið 2 skilað.

05 af 09

Finndu allar skilmála sem passa ekki við með greipi

Ímyndaðu þér að þú hafir lista yfir staðarnöfn með löndunum sem eru skráð á eftirfarandi hátt:

Þú gætir hafa tekið eftir því að Colwyn Bay hefur ekkert land sem tengist því.

Til að leita að öllum stöðum með landi sem þú getur notað eftirfarandi setningafræði:

grep land $ stöðum

Niðurstöðum skilar væri öllum stöðum nema fyrir Colwyn Bay.

Þetta virkar augljóslega aðeins fyrir staði sem lenda í landi (varla vísindaleg).

Þú getur snúið við valinu með því að nota eftirfarandi setningafræði:

grep -v land $ stöðum

Þetta myndi finna alla staði sem ekki endaði með landi.

06 af 09

Hvernig á að finna lausar línur í skrám með grep

Ímyndaðu þér að þú hafir inntakaskrá sem er notuð af forriti þriðja aðila sem hættir að lesa skrána þegar það finnur tóma línu sem hér segir:

Þegar forritið fær að línunni eftir liverpool mun það hætta að lesa merkingu colwyn bay er saknað alveg.

Þú getur notað grep til að leita að eyða línum með eftirfarandi setningafræði:

grep ^ $ stöðum

Því miður er þetta ekki sérstaklega gagnlegt því það skilar bara einni línu.

Þú gætir auðvitað treyst á fjölda ótækra lína sem athugun til að sjá hvort skráin gildir sem hér segir:

grep -c ^ $ stöðum

Það væri hins vegar gagnlegt að vita línu númerin sem eru með autt lína svo að þú getir skipt þeim. Þú getur gert það með eftirfarandi skipun:

grep -n ^ $ stöðum

07 af 09

Hvernig á að leita að strengi með hástöfum eða lágstöfum með grep

Með því að nota grep getur þú ákveðið hvaða línur í skrá eru með hástöfum með eftirfarandi setningafræði:

grep '[AZ]' filename

Hringbrautin [] leyfir þér að ákvarða fjölda stafa. Í dæminu hér að ofan samsvarar það hvaða staf sem er á milli A og Z.

Því að passa við lágstafir sem þú getur notað eftirfarandi setningafræði:

grep '[az]' filename

Ef þú vilt aðeins passa við stafi og ekki töluorð eða önnur tákn getur þú notað eftirfarandi setningafræði:

grep '[a-zA-Z]' filename

Þú getur gert það sama með númerum sem hér segir:

grep '[0-9]' filename

08 af 09

Útlit fyrir endurteknar mynstureiningar með grep

Þú getur notað krullu sviga {} til að leita að endurteknu mynstri.

Ímyndaðu þér að þú hafir skrá með símanúmerum sem hér segir:

Þú veist að fyrsta hluti tölunnar þarf að vera þrír tölustafir og þú vilt finna þær línur sem passa ekki við þetta mynstur.

Frá fyrra dæmi er vitað að [0-9] skilar öllum tölum í skrá.

Í þessu tilfelli viljum við línurnar sem byrja á þremur tölum og síðan er stafi (-). Þú getur gert það með eftirfarandi setningafræði:

grep "^ [0-9] [0-9] [0-9] -" tölur

Eins og við vitum frá fyrri dæmum þýðir karatið (^) að línan verður að byrja með eftirfarandi mynstri.

The [0-9] mun leita að hvaða númeri sem er á milli 0 og 9. Þar sem þetta er innifalið þrisvar sinnum samsvarar það 3 tölum. Að lokum er bandstrik til að tákna að bandstrik verður að ná árangri í þremur tölum.

Með því að nota hrokkið sviga er hægt að gera leitina minni eins og hér segir:

grep "^ [0-9] \ {3 \} -" tölur

The slash sleppur {bracket svo að það virkar sem hluti af venjulegu tjáningunni en í raun er það sem þetta er að segja er [0-9] {3} sem þýðir hvaða tala milli 0 og 9 þrisvar sinnum.

The curly sviga geta einnig verið notaður sem hér segir:

{5,10}

{5,}

{5,10} þýðir að persónan sem leitað er að verður að endurtaka amk 5 sinnum en ekki meira en 10 en {5,} þýðir að stafurinn verður að endurtaka amk 5 sinnum en það getur verið meira en það.

09 af 09

Notkun útgangsins frá öðrum skipunum með greipi

Svo langt höfum við horft á mynstur samsvörun innan einstakra skrár en grep getur notað framleiðsla frá öðrum skipunum sem inntak fyrir mynstur samsvörun.

Gott dæmi um þetta er að nota PS skipunina sem listar virkar ferli.

Til dæmis, hlaupa eftirfarandi skipun:

ps -ef

Öll hlaupandi ferli á kerfinu þínu verður birt.

Þú getur notað grep til að leita að tilteknu hlaupandi ferli sem hér segir:

ps -ef | grep eldur

Yfirlit

Grep stjórnin er grundvallar Linux stjórn og það er eitt sem er vel þess virði að læra þar sem það mun gera líf þitt miklu auðveldara þegar þú leitar að skrám og ferli þegar þú notar flugstöðina.