grep

Virkņu atrašana teksta failos, izmantojot grep ar regulāru izteiksmi

Virkņu atrašana teksta failos, izmantojot grep ar regulāru izteiksmi
grep ir viens no populārākajiem instrumentiem virkņu meklēšanai un atrašanai teksta failā. Nosaukums “grep” izriet no komandas, kas atrodas novecojušajā Unix ed rindas redaktora rīkā - komanda ed meklēšanai globāli caur failu a regulāra izteiksme un tad druka šīs līnijas bija g / re / lpp, kur re bija regulārā izteiksme, kuru izmantosit. Galu galā komanda grep tika uzrakstīta, lai veiktu šo meklēšanu failā, kad neizmantojat ed.

Šajā rakstā mēs parādīsim, kā veikt iepriekšēju virkņu meklēšanu, izmantojot Grep ar regulāru izteiksmi, sniedzot 10 praktiskus piemērus par tā ieviešanu. Daudziem šajā rakstā aplūkotajiem piemēriem ir praktiskas nozīmes, kas nozīmē, ka jūs varat tos izmantot ikdienas Linux programmēšanā. Turpmāk sniegtajos paraugos ir aprakstīti daži parasti meklēto modeļu regexp piemēri.

1. piemērs: teksta failā atrodiet vienu fraktētāju

Lai izvadītu faila “grāmata” rindas, kurās ir rakstzīme “$”, ierakstiet:

$ grep '\ $' grāmata

2. piemērs: atrodiet atsevišķu virkni teksta failā

Lai izvada rindas failā “grāmata”, kurā ir virkne “$ 14”.99 ', tips:

$ grep '\ $ 14 \.99 'grāmata

Ex 3: Atrodiet vienu īpašu fraktētāju teksta failā

Lai izvadītu faila “grāmata” rindas, kurās ir rakstzīme “\”, ierakstiet:

$ grep '\\' grāmata

4. piemērs: līniju saskaņošana, sākot ar noteiktu tekstu

Lai apzīmētu rindas sākumu, regexp izmantojiet 'ˆ'.

Lai izvadītu visas rindas mapē '/ usr / dict / words', kas sākas ar 'pro', ierakstiet:

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

Lai izvadītu visas faila “grāmata” rindas, kas sākas ar tekstu “sākumā”, neatkarīgi no gadījuma ierakstiet:

$ grep -i 'ˆ sākumā' grāmatā

PIEZĪME: Šie regexps tika citēti ar “rakstzīmēm; tas ir tāpēc, ka dažas čaumalas citādi izturas pret rakstzīmi ˆ kā īpašu

Papildus vārdu un frāžu meklējumiem varat izmantot grep, lai meklētu sarežģītus teksta modeļus, kurus sauc par regulārām izteiksmēm. Regulāra izteiksme vai “regexp” ir īpašo rakstzīmju teksta virkne, kas norāda a komplekts modeļu, lai tie atbilstu.

Tehniski runājot, vārdu vai frāžu raksti ir regulāras izteiksmes - tikai ļoti vienkārši. Regulārajā izteiksmē lielākā daļa rakstzīmju, ieskaitot burtus un ciparus, pārstāv sevi. Piemēram, regexp modelis 1 atbilst virknei '1' un modelim zēns atbilst virknei "zēns".

Ir vairākas rezervētas rakstzīmes, kuras dēvē par metarakstiem un kuras sevi nepārstāv regulārajā izteiksmē, taču tām ir īpaša nozīme, ko izmanto, lai izveidotu sarežģītus modeļus. Šīs metarakstu zīmes ir šādas: ., *, [, ], ˆ, $ un \. Ir labi atzīmēt, ka šādas metarakstzīmes ir izplatītas gandrīz visos parastajos un īpašajos Linux izplatījumos. Šis ir labs raksts, kas aptver metahīmu īpašās nozīmes un sniedz to izmantošanas piemērus.

5. piemērs: Līniju saskaņošana ar noteiktu tekstu

Izmantojiet '$' kā pēdiņu citētā teksta rakstzīmi, lai šis teksts atbilstu tikai rindas beigās. Lai izvades rindas failā “iet”, kas beidzas ar izsaukuma zīmi, ierakstiet:

$ grep '!$ 'iet

6. piemērs: noteikta garuma līniju saskaņošana

Lai saskaņotu noteikta garuma līnijas, izmantojiet šo skaitli '.'rakstzīmes starp' ˆ 'un' $ '- piemēram, lai saskaņotu visas līnijas, kuru platums ir divas rakstzīmes (vai kolonnas), meklēšanai izmantojiet regresiju' ˆ… $ '.

Lai izvadītu visas rindas “/ usr / dict / words”, kas ir tieši trīs rakstzīmes platas, ierakstiet:

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

Garākām rindām ir lietderīgāk izmantot citu konstrukciju: 'ˆ.\ numurs \ $ ', kur skaitlis ir atbilstošo rindu skaits. Izmantojiet ',', lai norādītu skaitļu diapazonu.

Lai izvadītu visas rindas “/ usr / dict / words”, kuru platums ir tieši divpadsmit rakstzīmes, ierakstiet:

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

Lai izvadītu visas rindas “/ usr / dict / words”, kuru platums ir divdesmit divas vai vairāk rakstzīmes, ierakstiet:

$ grep 'ˆ.\ 22, \ $ '/ usr / dict / words

7. piemērs: atbilstošas ​​līnijas, kas satur kādu no dažiem regexps

Lai saskaņotu līnijas, kurās ir kāds no vairākiem regexps, norādiet katru no regexps, lai meklētu starp pārmaiņu operatoriem ('\ |') kā regexp, lai meklētu. Tiks izvadītas līnijas, kurās ir kāds no norādītajiem regexps.

Lai izvadītu visas “playboy” rindas, kurās ir raksti “grāmata” vai “kūka”, ierakstiet:

$ grep 'grāmata \ | kūka' playboy

8. piemērs: atbilstošas ​​līnijas, kas satur visus dažus regulāros izteicienus

Lai izvada atbilstošās līnijas visi no vairākiem regexps, izmantojiet grep, lai izvadītu rindas, kurās ir pirmais regexp, kuru vēlaties saskaņot, un ievadiet izvadi grep ar otro regexp kā argumentu. Turpiniet pievienot caurules, lai satvertu visus meklētos atkārtotos meklēšanas vaicājumus.

Lai izvadītu visas rindas atskaņošanas sarakstā, kurā ir gan raksti “krasts”, gan “debesis”, neatkarīgi no gadījuma ierakstiet:

$ grep -i 'krasta' atskaņošanas saraksts | grep -i debesis

Ex 9: atbilstošas ​​līnijas, kurās ir tikai dažas rakstzīmes

Lai saskaņotu līnijas, kurās ir tikai noteiktas rakstzīmes, izmantojiet regexp 'ˆ [characters] * $', kur atbilst rakstzīmes.  Lai izvada rindas “/ usr / dict / words”, kurās ir tikai patskaņi, ierakstiet:

$ grep -i 'ˆ [aeiou] * $' / usr / dict / words

Opcija '-i' atbilst rakstzīmēm neatkarīgi no gadījuma; tāpēc šajā piemērā visas patskaņu rakstzīmes tiek saskaņotas neatkarīgi no gadījuma.

10. piemērs: frāžu atrašana neatkarīgi no atstarpēm

Viens no veidiem, kā meklēt frāzi, kas var rasties ar papildu atstarpēm starp vārdiem vai pāri līnijas vai lapas pārtraukumam, ir noņemt visas ievades rindiņas un papildu atstarpes un pēc tam to sagrābt. Lai to izdarītu, ievadiet ievadi tr ar parametru "\ r \ n: \> \ | -" kā argumentu opcijai '-d' (noņemot visus rindas pārtraukumus no ievades); pievelciet to uz FM filtru ar opciju '-u' (tekstu izvadot ar vienādu atstarpi); un caurule, lai satvertu ar meklējamo modeli.

Lai meklētu virknes 'rindiņu pārtraukumos vienlaikus ar' failā 'docs', ierakstiet:

$ kaķu dokumenti | tr -d '\ r \ n: \> \ |
-"| fmt -u | grep 'vienlaicīgi ar'

Kopsavilkums

Šajā rakstā mēs pārskatījām 10 praktiskus Grep Linux komandas piemērus virkņu meklēšanai un atrašanai teksta failā. Pa ceļam mēs iemācījāmies izmantot regulāras izteiksmes kopā ar Grep, lai veiktu sarežģītus meklējumus teksta failos. Tagad jums ir labāka ideja par to, cik spēcīgas ir Linux meklēšanas funkcijas.

Šeit ir papildu resursi tiem, kas vēlas uzzināt vairāk par Linux programmēšanu:

Resursi sistēmas administratoriem

Resursi Linux kodola programmētājiem

Linux failu sistēmas vārdnīca

Visaptverošs pārskats par to, kā darbojas Linux failu un direktoriju sistēma

WinMouse ļauj jums pielāgot un uzlabot peles rādītāja kustību Windows datorā
Ja vēlaties uzlabot peles rādītāja noklusējuma funkcijas, izmantojiet bezmaksas programmatūru WinMouse. Tas pievieno vairāk funkciju, kas palīdzēs jum...
Peles kreisā klikšķa poga nedarbojas operētājsistēmā Windows 10
Ja ar klēpjdatoru vai galddatoru izmantojat īpašu peli, bet nedarbojas peles kreisās klikšķa poga kādu iemeslu dēļ operētājsistēmā Windows 10/8/7 šeit...
Rakstot Windows 10, kursors lec vai pārvietojas nejauši
Ja atklājat, ka peles kursors automātiski, nejauši lec vai pārvietojas pats, rakstot Windows klēpjdatorā vai datorā, daži no šiem ieteikumiem var palī...