grep

Stringide leidmine tekstifailidest regulaaravaldisega grepi abil

Stringide leidmine tekstifailidest regulaaravaldisega grepi abil
grep on üks populaarsemaid tööriistu tekstifailist stringide otsimiseks ja leidmiseks. Nimi "grep" tuleneb käest, mis on nüüdseks aegunud Unixi ed-redaktori tööriistas - ed-käsk otsimiseks ülemaailmselt faili kaudu regulaarne väljend ja siis trükkimine need read olid g / re / lk, kus re oli regulaarne väljend, mida kasutaksite. Lõpuks kirjutati käsk grep selle otsingu tegemiseks failis, kui ed-d ei kasutata.

Selles artiklis näitame teile, kuidas käivitada stringide otsimine regulaaravaldisega Grepi abil, andes teile 10 praktilist näidet selle rakenduste kohta. Paljudel selles artiklis käsitletud näidetel on praktiline tähendus, mis tähendab, et saate neid kasutada oma igapäevases Linuxi programmeerimises. Järgmistes näidetes kirjeldatakse regulaarseid näiteid tavaliselt otsitavate mustrite kohta.

Näide 1: leidke tekstifailist üksik prahtija

Faili „book” ridade väljastamiseks, mis sisaldavad tähte „$”, tippige:

$ grep '\ $' raamat

Näide 2: leidke tekstifailist üks string

Faili 'book' ridade väljastamiseks, mis sisaldab stringi '$ 14.99 ', tüüp:

$ grep '\ $ 14 \.99-aastane raamat

Näide 3: leidke tekstifailist üksik spetsiaalne prahtija

Faili „book” ridade väljastamiseks, mis sisaldavad märki „\”, tippige:

$ grep '\\' raamat

Nt 4: joonte sobitamine alates teatud tekstist

Kasutage rea alguses tähtkirja „exp”, et tähistada rea ​​algust.

Kõigi ridade väljaandmiseks kataloogis / usr / dict / words, mis algavad tähega „pro”, tippige:

$ grep 'ˆpro' / usr / dict / words

Kõigi ridade väljastamiseks failis „raamat”, mis algavad tekstiga „alguses”, olenemata juhtumist, tippige:

$ grep -i 'alguses raamatus

MÄRGE: Neid regexpe tsiteeriti tähemärkidega; Selle põhjuseks on asjaolu, et mõned kestad käsitlevad tähemärki otherwise muidu kui spetsiaalset metamärki

Lisaks sõna- ja fraasiotsingutele saate grepiga otsida keerulisi tekstimustreid, mida nimetatakse regulaaravaldisteks. Regulaaravaldis või “regexp” on erimärkide tekstistring, mis määrab a seatud sobivad mustrid.

Tehniliselt öeldes on sõna- või fraasimustrid regulaaravaldised - lihtsalt väga lihtsad. Regulaaravaldises esindab enamik märke, sealhulgas tähed ja numbrid, iseennast. Näiteks regexp muster 1 sobib stringi '1' ja mustriga poiss sobib stringiga "poiss".

On mitmeid reserveeritud tähemärke, mida nimetatakse metamärkideks ja mis ei esinda ennast regulaaravaldises, kuid neil on eriline tähendus, mida kasutatakse keerukate mustrite loomiseks. Need metamärgid on järgmised: ., *, [, ], ˆ, $ ja \. On hea märkida, et sellised metamärgid on levinud peaaegu kõigi levinud ja spetsiaalsete Linuxi distributsioonide seas. Siin on hea artikkel, mis hõlmab metamärkide eritähendusi ja toob näiteid nende kasutamisest.

Nt 5: joonte sobitamine kindla tekstiga

Tsiteeritud teksti viimase tähemärgina kasutage tähte $, et see vastaks tekstile ainult rea lõpus. Hüüumärgiga lõppevate faili „läheb” ridade väljastamiseks tippige:

$ grep '!$ läheb

Nt 6: teatud pikkusega joonte sobitamine

Kindla pikkusega joonte sobitamiseks kasutage seda arvu.'characters' ja '$' vahelised tähemärgid - näiteks kõigi kahe tähemärgi (või veeru) laiuse rea sobitamiseks kasutage otsimiseks regressi 'ˆ… $'.

Kõigi täpselt kolme tähemärgi laiuste rida kataloogis "/ usr / dict / words" sisestage:

$ grep 'ˆ ... $' / usr / dict / words

Pikemate ridade puhul on kasulikum kasutada erinevat konstruktsiooni: ':.\ number \ $ ', kus number on sobitatavate ridade arv. Numbrivahemiku määramiseks kasutage klahvi ','.

Kõigi täpselt kaheteistkümne tähemärgi laiuste kaustade / / usr / dict / words ridade väljastamiseks tippige:

$ grep 'ˆ.\ 12 \ $ '/ usr / dict / words

Kõigi ridade väljastamiseks failis "/ usr / dict / words", mis on kahekümne kaks või enam tähemärki lai, tippige:

$ grep 'ˆ.\ 22, \ $ '/ usr / dict / sõnad

Nt 7: sobivad read, mis sisaldavad mõnda regexps'i

Ridade sobitamiseks, mis sisaldavad suvalist regexps-i, määrake iga regexps, et otsida vaheldusoperaatorite vahel ('\ |') regexina otsimiseks. Välja antakse read, mis sisaldavad mõnda antud regexps-i.

„Playboy” kõigi ridade väljastamiseks, mis sisaldavad mustreid „raamat” või „kook”, tippige:

$ grep 'raamat \ | kook' playboy

Nt 8: sobitamisjooned, mis sisaldavad kõiki regexse

Vastavate ridade väljastamiseks kõik regexps-i hulgast kasutage väljundi ridade jaoks, mis sisaldavad esimest sobitatavat regexpi, ja sisestage väljund greg-i teise argumendina. Jätkake torude lisamist kõigi otsitavate regexpside otsimiseks.

Kõigi ridade esitamiseks esitusloendis, mis sisaldab nii mustreid „kalda” kui „taevas”, kirjutage sõltumata juhtumist:

$ grep -i 'kalda' esitusloend | grep -i taevas

Nt 9: sobivad jooned, mis sisaldavad ainult teatud märke

Ridade sobitamiseks, mis sisaldavad ainult teatud märke, kasutage regexp 'ˆ [tähemärki] * $', kus sobivad märgid.  Ainult vokaale sisaldavate ridade väljaandmiseks kataloogis / / usr / dict / words sisestage:

$ grep -i 'ˆ [aeiou] * $' / usr / dict / sõnad

Valik '-i' sobib tähemärkidele olenemata suurtähest; nii et selles näites sobitatakse kõik täishäälikumärgid olenemata suurtähest.

Nt 10: fraaside leidmine, olenemata vahekaugusest

Üks võimalus fraasi otsimiseks, mis võib esineda sõnade vahel või rea või lehe vaheaja juures lisavahega, on sisendist kõigi reavoogude ja lisatühikute eemaldamine ning seejärel selle haaramine. Selleks sisestage sisend tr-ile argumendiga "\ r \ n: \> \ | -" valikule '-d "(eemaldades sisendist kõik reavahetused); tõmmake see fmt-filtrisse valiku '-u' abil (teksti väljastamine ühtlase vahega); ja toru, et haarata otsitava mustriga.

Stringi 'reavahemike otsimiseks failis' docs 'samal ajal' tippige:

$ kassi dokumendid | tr -d '\ r \ n: \> \ |
-'| fmt -u | grep 'samal ajal kui'

Kokkuvõte

Selles artiklis vaatasime üle 10 praktilist näidet Grep Linuxi käsu kasutamiseks tekstifailist stringide otsimiseks ja leidmiseks. Teel õppisime, kuidas kasutada korrapäraseid väljendeid koos Grepiga tekstifailide keerukate otsingute läbiviimiseks. Nüüdseks on teil parem idee selle kohta, kui võimsad on Linuxi otsingufunktsioonid.

Siin on lisaressursid neile, kes on huvitatud Linuxi programmeerimise kohta lisateabe saamisest:

Ressursid süsteemiadministraatoritele

Ressursid Linuxi kerneli programmeerijatele

Linuxi failisüsteemi sõnastik

Põhjalik ülevaade Linuxi faili- ja kataloogisüsteemi toimimisest

Kuidas FPS-i suurendada Linuxis?
FPS tähistab Kaadrit sekundis. FPS-i ülesanne on mõõta kaadrisagedust video taasesitamisel või mängude esitamisel. Lihtsamalt öeldes nimetatakse iga s...
Parimad Oculus App Lab mängud
Kui olete Oculuse peakomplekti omanik, peate olema teadlik külglaadimisest. Kõrvalaadimine on protsess, millega installitakse peakomplekti mitte-poesi...
10 parimat mängu, mida Ubuntu kaudu mängida
Windowsi platvorm on olnud üks mängude domineerivaid platvorme, kuna tohutu protsent mänge areneb täna Windowsi loomupäraseks toetamiseks. Kas keegi s...