Comanda egrep face parte din familia comenzii grep care este folosită pentru căutarea de modele în Linux. Dacă ați folosit comanda grep, egrep funcționează la fel ca grep -E (grep Extended regex’). Egrep scanează un anumit fișier, linie cu linie, și tipărește linia (liniile) care conține (conțin) șirul de căutare/expresia regulată. În acest articol, vom explica 15 exemple utile ale comenzilor egrep care îi vor ajuta pe începători și chiar pe experți să efectueze căutări semnificative în LinuxAm realizat aceste exemple pe un sistem Debian 10 Buster, dar ele pot fi reproduse cu ușurință pe majoritatea distribuțiilor Linux.
- Exemplu 1: Căutarea unui anumit șir de caractere într-un fișier
- Exemplu 2: Căutarea unui anumit șir de caractere în mai multe fișiere
- Exemplul 3: Căutarea recurentă a șirului de caractere în întregul director
- Exemplu 4: Efectuarea unei căutări insensibile la majuscule și minuscule
- Exemplu 5: Căutarea unui șir de caractere ca un cuvânt complet și nu ca subșir
- Exemplu 6: Imprimarea numai a numelor de fișiere care conțin șirul de caractere
- Exemplul 7: Imprimarea doar a șirului de căutare dintr-un fișier
- Exemplul 8: Afișarea unui număr n de linii înainte,după sau în jurul șirului de căutare
- Exemplu 9: Potrivirea expresiilor regulate în fișiere
- Exemplul 10: Evidențierea șirului de căutare
- Exemplu 11: Efectuarea căutării inversate într-un fișier
- Exemplu 12: Efectuarea unei căutări inversate pe baza mai multor criterii/modele de căutare
- Exemplul 13: Imprimarea numărului de linii care se potrivesc cu șirul de căutare
- Exemplul 14: Afișarea numărului liniei în care se potrivește șirul de caractere
- Exemplul 15: Afișarea poziției din fișier în care se potrivește șirul de căutare
Exemplu 1: Căutarea unui anumit șir de caractere într-un fișier
Aceasta este cea mai comună utilizare a comenzii egrep. Ceea ce trebuie să faceți este să specificați un șir de caractere pe care doriți să-l căutați și numele fișierului în care doriți să căutați acel șir de caractere. Rezultatul afișează apoi întreaga linie care conține șirul căutat.
Sintaxa:
Exemplu:
În acest exemplu, am căutat cuvântul „debian” în fișierul text specificat. Puteți vedea cum rezultatele afișează întreaga linie care conține cuvântul „debian”:
Exemplu 2: Căutarea unui anumit șir de caractere în mai multe fișiere
Cu comanda egrep, puteți căuta un șir de caractere printre mai multe fișiere care rezidă în același director. Trebuie doar să fiți puțin mai specific în furnizarea unui „model” pentru fișierele căutate. Acest lucru va deveni mai clar cu exemplul pe care îl vom prezenta.
Sintaxa:
Exemplu:
Aici, vom căuta cuvântul „debian” în toate fișierele .txt prin specificarea modelului de nume de fișier după cum urmează:
Comanda a tipărit toate liniile, împreună cu numele fișierelor care conțin cuvântul „debian” din toate fișierele .txt din directorul curent.
Exemplul 3: Căutarea recurentă a șirului de caractere în întregul director
Când doriți să căutați un șir de caractere în toate fișierele dintr-un director și din subdirectoarele sale, puteți face acest lucru utilizând flag-ul -r cu comanda egrep.
Sintaxa:
Exemplu:
În acest exemplu, caut cuvântul „sample” în fișierele din întregul director curent(Downloads).
Rezultatele conțin toate liniile, împreună cu numele fișierelor, care conțin cuvântul „sample” din toate fișierele din directorul Downloads, și din subdirectoarele sale.
Exemplu 4: Efectuarea unei căutări insensibile la majuscule și minuscule
Cu ajutorul indicatorului -i, puteți utiliza comanda egrep pentru a imprima rezultatele pe baza unui șir de căutare fără a vă preocupa de majusculele acestuia.
Sintaxa:
Exemplu:
Aici, caut cuvântul „debian” și vreau ca rezultatele să afișeze toate liniile din fișier care conțin cuvântul „debian” sau „Debian, indiferent de majusculele acestuia.
Vezi cum steagul -i m-a ajutat să obțin toate liniile care conțin șirul de căutare printr-o căutare „insensibilă” la majuscule și minuscule.
Exemplu 5: Căutarea unui șir de caractere ca un cuvânt complet și nu ca subșir
Când căutați în mod normal un șir de caractere prin egrep, acesta tipărește toate cuvintele care conțin șirul ca subșir. De exemplu, căutarea șirului „on” va imprima toate cuvintele care conțin șirul „on”, cum ar fi ” on”, „only”, „monitor”, „clone”, etc. Dacă doriți ca rezultatele să afișeze doar cuvântul „on” ca un cuvânt complet și nu ca subșir, puteți utiliza indicatorul -w cu egrep.
Sintaxa:
Exemplu:
Aici caut șirul „on” într-un fișier de probă:
Vezi în rezultatul de mai sus, că acesta conține și cuvântul „doar”. Cu toate acestea, acest lucru nu este ceea ce îmi doresc, deoarece caut exclusiv cuvântul „on”. Așadar, aceasta este comanda pe care o voi folosi în schimb:
Acum rezultatele căutării mele includ doar liniile care conțin cuvântul „on” ca un cuvânt întreg.
Exemplu 6: Imprimarea numai a numelor de fișiere care conțin șirul de caractere
Câteodată dorim să preluăm numai numele de fișiere care conțin un anumit șir de caractere, în loc să imprimăm liniile care îl conțin. Acest lucru se poate face folosind flag-ul -l (L minuscul) cu comanda egrep.
Sintaxa:
Exemplu:
Aici caut șirul „sample” în toate fișierele .txt din directorul curent:
Rezultatele căutării imprimă doar numele fișierelor care conțin șirul specificat.
Exemplul 7: Imprimarea doar a șirului de căutare dintr-un fișier
În loc să imprimați întreaga linie care conține șirul de căutare, puteți folosi comanda egrep pentru a imprima șirul în sine. Șirul va fi tipărit de câte ori apare în fișierul specificat.
Sintaxa:
Exemplu:
În acest exemplu, caut cuvântul „This” în fișierul meu.
Nota: Această utilizare a comenzii vine la îndemână atunci când căutați un șir de caractere pe baza unui model de expresie regulată. Vom explica în detaliu expresiile regulate într-unul din exemplele următoare.
Exemplul 8: Afișarea unui număr n de linii înainte,după sau în jurul șirului de căutare
Câteodată este foarte important să cunoaștem contextul dintr-un fișier în care este utilizat un anumit șir de caractere. Egrep vine la îndemână în sensul că poate fi folosit pentru a afișa linia care conține șirul de căutare și, de asemenea, un anumit număr de linii înainte, după și în jurul acestuia.
Aceasta este mostra de fișier text pe care o voi folosi pentru a explica exemplele următoare:
N număr de linii După șirul de căutare:
Utilizarea stegulețului A în felul următor va afișa linia care conține șirul de căutare și un număr N de linii după acesta:
Exemplu:
N număr de linii Înaintea șirului de căutare:
Utilizarea stegulețului B în modul următor va afișa linia care conține șirul de căutare și N număr de linii înaintea acesteia:
Exemplu:
N număr de linii Înainte de șirul de căutare:
Utilizarea stegulețului C în modul următor va afișa linia care conține șirul de căutare, precum și N număr de linii înainte și după acesta:
Exemplu:
Exemplu 9: Potrivirea expresiilor regulate în fișiere
Comanda egrep devine mai puternică pe măsură ce căutați expresii regulate în loc de șiruri de căutare solide într-un fișier.
Sintaxa:
Lasă-ne să explicăm cum puteți folosi expresiile regulate în căutarea egrep:
Operatorul de repetiție | Utilizați |
? | Elementul precedent înainte de ? este opțional și se potrivește maxim o singură dată |
* | Elementul anterior lui * se va potrivi de zero sau mai multe ori |
+ | Elementul anterior lui + se va potrivi de una sau mai multe ori |
{n} | Elementul anterior se potrivește exact de un număr n de ori. |
{n,} | Elementul precedent se potrivește de n sau mai multe ori |
{,m} | Elementul precedent se potrivește de maxim m ori |
{n,m} | Elementul precedent se potrivește de cel puțin n ori, dar nu mai mult de m ori |
Exemplu:
În exemplul următor, liniile care conțin următoarea expresie se potrivesc:
începând cu „Gnome” și terminând cu ” programs”
Exemplul 10: Evidențierea șirului de căutare
Când setați variabila de mediu GREP_OPTIONS după cum urmează, obțineți rezultatul cu șirul/modelul de căutare evidențiat în rezultate:
Puteți apoi să căutați șirul de caractere în orice mod pe care l-am descris în exemplele din acest articol.
Exemplu 11: Efectuarea căutării inversate într-un fișier
Prin căutare inversată, ne referim la faptul că comanda egrep tipărește totul în fișier, cu excepția liniilor care conțin șirul de căutare. Vom folosi următorul fișier de exemplu pentru a explica căutarea inversă prin egrep. Am tipărit conținutul fișierului folosind comanda cat:
Sintaxa:
Exemplu:
Din fișierul de exemplu pe care l-am menționat, dorim să omitem linia care conține cuvântul „doi” în ieșire, de aceea vom folosi următoarea comandă:
Puteți vedea cum ieșirea conține totul din fișierul eșantion, cu excepția celei de-a doua linii care conținea șirul de căutare „doi”.
Exemplu 12: Efectuarea unei căutări inversate pe baza mai multor criterii/modele de căutare
Cu ajutorul indicatorului -v, puteți face, de asemenea, ca comanda egrep să efectueze o căutare inversată pe baza mai multor șiruri/modele de căutare.
Pentru a explica acest scenariu vom folosi același fișier de probă pe care l-am menționat în exemplul 11.
Sintaxa:
…. filename
Exemplu:
Din fișierul eșantion pe care l-am menționat, dorim să omitem linia (liniile) care conțin cuvintele „unu” și „doi” în ieșire, de aceea vom folosi următoarea comandă:
Am furnizat două cuvinte pentru a le omite folosind flag-ul -e, prin urmare ieșirea va apărea după cum urmează:
Exemplul 13: Imprimarea numărului de linii care se potrivesc cu șirul de căutare
În loc să imprimați șirul căutat din fișier sau liniile care îl conțin, puteți folosi comanda egrep pentru a număra și imprima numărul de linii care se potrivesc cu șirul. Această numărătoare poate fi obținută utilizând flag-ul -c cu comanda egrep.
Sintaxa:
Exemplu:
În acest exemplu, vom folosi indicatorul -c pentru a număra numărul de linii care conțin cuvântul „This” în fișierul nostru de probă:
De asemenea, puteți utiliza aici funcția de căutare inversă pentru a număra și imprima numărul de linii care nu conțin șirul de căutare:
Exemplul 14: Afișarea numărului liniei în care se potrivește șirul de caractere
Cu ajutorul indicatorului -n, puteți face ca comanda egrep să tipărească linia găsită împreună cu numărul liniei care conține șirul de caractere de căutare.
Sintaxa:
Exemplu:
Puteți vedea cum sunt afișate numerele de linie în raport cu rezultatele căutării.
Exemplul 15: Afișarea poziției din fișier în care se potrivește șirul de căutare
Dacă doriți să cunoașteți poziția din fișier în care există șirul de căutare, puteți utiliza indicatorul -b cu comanda egrep.
Exemplu:
Rezultatul căutării tipărește decalajul de octeți al fișierului în care există cuvântul căutat. aceasta a fost o utilizare detaliată a comenzii egrep. Utilizând o combinație a stegulețelor explicate în acest articol, puteți efectua căutări mai semnificative și mai complexe în fișierele dumneavoastră.
.