Š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āmata2. piemērs: atrodiet atsevišķu virkni teksta failā
Lai izvada rindas failā “grāmata”, kurā ir virkne “$ 14”.99 ', tips:
$ grep '\ $ 14 \.99 'grāmataEx 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āmata4. 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 / wordsLai 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 '!$ 'iet6. 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 / wordsGarā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 / wordsLai izvadītu visas rindas “/ usr / dict / words”, kuru platums ir divdesmit divas vai vairāk rakstzīmes, ierakstiet:
$ grep 'ˆ.\ 22, \ $ '/ usr / dict / words7. 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' playboy8. 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 debesisEx 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 / wordsOpcija '-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
- Linux sistēmas administrēšanas rokasgrāmata - kas ir Linux operētājsistēma un kā tā darbojas
- Linux sistēmas administrēšanas rokasgrāmata - Linux virtuālās atmiņas un diska bufera kešatmiņas pārskats
- Linux sistēmas administrēšanas rokasgrāmata - labākā prakse Linux sistēmu uzraudzībai
- Linux sistēmas administrēšanas rokasgrāmata - labākā prakse Linux sāknēšanas un izslēgšanas darbībām
- Linux sistēmas administrēšanas rokasgrāmata - dublēšanas darbību veidošanas un pārvaldības paraugprakse
Resursi Linux kodola programmētājiem
- Kā darbojas operētājsistēmas Linux atmiņas pārvaldība
- Visaptverošs Linux kodola operētājsistēmas procesu pārskats
- Kādi ir Linux kodola uzdevumu pārvaldības mehānismi
Linux failu sistēmas vārdnīca
Visaptverošs pārskats par to, kā darbojas Linux failu un direktoriju sistēma