În acest articol, vă arătăm să rulați în avans căutarea șirurilor folosind Grep cu expresie regulată, oferindu-vă 10 exemple practice despre implementările sale. Multe exemple discutate în acest articol au implicații practice, ceea ce înseamnă că le puteți folosi în programarea zilnică Linux. Următoarele exemple descriu câteva exemple de regexp pentru modele căutate în mod obișnuit.
Ex 1: Găsiți un singur Charterer într-un fișier text
Pentru a afișa liniile din fișierul „carte” care conțin un caracter „$”, tastați:
$ grep '\ $' carteEx 2: Găsiți un singur șir într-un fișier text
Pentru a afișa linii în fișierul „carte” care conține șirul „14 USD”.99 ', tastați:
$ grep '\ $ 14 \.Cartea de 99 'Ex 3: Găsiți un singur navlositor special într-un fișier text
Pentru a afișa liniile din fișierul „carte” care conțin un caracter „\”, tastați:
$ grep '\\' carteEx 4: potrivirea liniilor începând cu anumite texte
Utilizați „ˆ” într-o regexp pentru a indica începutul unei linii.
Pentru a afișa toate liniile în '/ usr / dict / cuvinte' începând cu 'pro', tastați:
$ grep 'ˆpro' / usr / dict / wordsPentru a afișa toate liniile din fișierul „carte” care încep cu textul „la început”, indiferent de caz, tastați:
$ grep -i 'ˆîn începutul' carteNOTĂ: Aceste regexps au fost citate cu „caractere; acest lucru se datorează faptului că unele cochilii tratează altfel caracterul „ˆ” ca pe un „metacaracter” special
Pe lângă căutările de cuvinte și fraze, puteți utiliza grep pentru a căuta modele de text complexe numite expresii regulate. O expresie obișnuită - sau „regexp” - este un șir text de caractere speciale care specifică un a stabilit de tipare pe măsură.
Din punct de vedere tehnic, modelele de cuvinte sau fraze sunt expresii regulate - doar foarte simple. Într-o expresie regulată, majoritatea personajelor - inclusiv litere și cifre - se reprezintă pe sine. De exemplu, modelul regexp 1 se potrivește cu șirul „1” și cu modelul băiat se potrivește cu șirul „băiat”.
Există o serie de caractere rezervate numite metacaractere care nu se reprezintă într-o expresie regulată, dar au o semnificație specială care este utilizată pentru a construi modele complexe. Aceste metacaractere sunt după cum urmează: ., *, [, ], ˆ, $ și \. Este bine să rețineți că astfel de metacaractere sunt frecvente în aproape toate distribuțiile Linux comune și speciale. Iată un articol bun care acoperă semnificațiile speciale ale metacaracterelor și oferă exemple de utilizare a acestora.
Ex 5: potrivirea liniilor care se termină cu anumite texte
Folosiți „$” ca ultim caracter al textului citat pentru a se potrivi cu textul respectiv doar la sfârșitul unui rând. Pentru a ieși linii în fișierul „merge” care se termină cu un punct de exclamare, tastați:
$ grep '!$ 'mergeEx 6: potrivirea liniilor de o anumită lungime
Pentru a potrivi liniile de o anumită lungime, utilizați acel număr de „.„caractere între„ ˆ ”și„ $ ”- de exemplu, pentru a se potrivi cu toate liniile care au două caractere (sau coloane) lățime, utilizați„ ˆ… $ ”ca regexp pentru a căuta.
Pentru a afișa toate liniile din „/ usr / dict / words” care au exact trei caractere lățime, tastați:
$ grep 'ˆ ... $' / usr / dict / wordsPentru linii mai lungi, este mai util să folosiți o construcție diferită: 'ˆ.\ number \ $ ', unde number este numărul de linii care trebuie să se potrivească. Utilizați „,” pentru a specifica o gamă de numere.
Pentru a afișa toate liniile din „/ usr / dict / words” care au exact douăsprezece caractere lățime, tastați:
$ grep 'ˆ.\ 12 \ $ '/ usr / dict / wordsPentru a afișa toate liniile din „/ usr / dict / words” care au douăzeci și două sau mai multe caractere lățime, tastați:
$ grep 'ˆ.\ 22, \ $ '/ usr / dict / wordsEx 7: potrivirea liniilor care conțin oricare dintre unele regexps
Pentru a potrivi liniile care conțin oricare dintre un număr de regexps, specificați fiecare dintre regexps pentru a căuta între operatorii de alternanță ('\ |') ca regexp pentru a căuta. Vor fi afișate linii care conțin oricare dintre regex-urile date.
Pentru a afișa toate liniile din „playboy” care conține fie modelele „cartea”, fie „tort”, tastați:
$ grep 'cartea \ | tort' playboyEx 8: Linii de potrivire care conțin toate unele Regexps
Pentru a afișa liniile care se potrivesc toate dintr-un număr de regexpuri, utilizați grep pentru a ieși liniile care conțin prima regexp pe care doriți să o potriviți și conductați ieșirea la un grep cu a doua regexp ca argument. Continuați să adăugați țevi la căutările grep pentru toate regexpurile pe care doriți să le căutați.
Pentru a afișa toate liniile din „lista de redare” care conține ambele modele „țărm” și „cer”, indiferent de caz, tastați:
$ grep -i lista de redare „țărmul” | grep -i cerEx 9: Linii de potrivire care conțin doar anumite personaje
Pentru a potrivi liniile care conțin doar anumite caractere, utilizați expresia regexp „ˆ [caractere] * $”, unde caracterele sunt cele care se potrivesc. Pentru a afișa liniile în „/ usr / dict / words” care conțin doar vocale, tastați:
$ grep -i 'ˆ [aeiou] * $' / usr / dict / wordsOpțiunea „-i” se potrivește cu caractere indiferent de caz; deci, în acest exemplu, toate caracterele vocale sunt potrivite indiferent de caz.
Ex 10: Găsirea frazelor indiferent de spațiu
O modalitate de a căuta o frază care ar putea apărea cu spații suplimentare între cuvinte sau peste o linie sau întrerupere de pagină, este să eliminați toate alimentările de linie și spațiile suplimentare de la intrare, apoi grep că. Pentru a face acest lucru, introduceți intrarea în tr cu "\ r \ n: \> \ | -" ca argument la opțiunea '-d' (eliminând toate pauzele de linie de la intrare); direcționați-l către filtrul fmt cu opțiunea „-u” (trimiterea textului cu spațiere uniformă); și trimiteți-l la grep cu modelul de căutat.
Pentru a căuta șirul „între pauze” în același timp cu „în fișierul„ docs ”, tastați:
$ cat docs | tr -d '\ r \ n: \> \ |-'| fmt -u | grep "în același timp cu"
rezumat
În acest articol, am analizat 10 exemple practice de utilizare a comenzii Grep Linux pentru căutarea și găsirea șirurilor într-un fișier text. Pe parcurs, am învățat cum să folosim expresii regulate împreună cu Grep pentru a efectua căutări complexe pe fișiere text. Până acum aveți o idee mai bună despre cât de puternice sunt funcțiile de căutare Linux.
Iată resurse suplimentare pentru cei interesați să afle mai multe despre programarea Linux:
Resurse pentru administratorii de sistem
- Linux System Admin Guide - Ce este sistemul de operare Linux și cum funcționează
- Ghid de administrare a sistemului Linux - Prezentare generală a memoriei cache Linux a memoriei virtuale și a discului
- Ghid de administrare a sistemului Linux - Cele mai bune practici pentru monitorizarea sistemelor Linux
- Ghid de administrare a sistemului Linux - Cele mai bune practici pentru efectuarea boot-urilor și închiderilor Linux
- Ghid de administrare a sistemului Linux - Cele mai bune practici pentru realizarea și gestionarea operațiunilor de backup
Resurse pentru programatorii kernel Linux
- Cum funcționează gestionarea memoriei sistemului de operare Linux
- Revizuire cuprinzătoare a proceselor sistemului de operare Kernel Linux
- Care sunt mecanismele din spatele gestionării sarcinilor Linux Kernel
Dicționar Linux File System
Revizuire cuprinzătoare a modului în care funcționează sistemul de fișiere și directoare Linux