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

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:

$ egrep „search_string” filename

Exemplu:

$ egrep debian samplefile.txt

Î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:

$ egrep „search_string” filename_pattern

Exemplu:

Aici, vom căuta cuvântul „debian” în toate fișierele .txt prin specificarea modelului de nume de fișier după cum urmează:

$ egrep „debian” *.txt

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:

$ egrep -r „search_string” *

Exemplu:

În acest exemplu, caut cuvântul „sample” în fișierele din întregul director curent(Downloads).

$ egrep -r „sample” *

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:

$ egrep -i „search_string” nume fișier

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.

$ egrep -i „search_string” filename

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:

$ egrep -w „search_string” filename

Exemplu:

Aici caut șirul „on” într-un fișier de probă:

$ egrep -i „on” samplefile.txt

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:

$ egrep -iw „on” samplefile.txt

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:

$ egrep -l „search_string” filename_pattern

Exemplu:

Aici caut șirul „sample” în toate fișierele .txt din directorul curent:

$ egrep -l sample *.txt

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:

$ egrep -o „search_string” filename

Exemplu:

În acest exemplu, caut cuvântul „This” în fișierul meu.

$ egrep -o This samplefile_.txt

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:

$ egrep -A <N> „șirul_de_cercetare” nume_de_filtru

Exemplu:

$ egrep -A 2 „sample” samplefile.txt

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:

$ egrep -B <N> „search_string” filename

Exemplu:

$ egrep -B 2 „sample” samplefile.txt

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:

$ egrep -C <N> „search_string” filename

Exemplu:

$ egrep -C 2 „sample” samplefile.txt

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:

$ egrep „RegularExpressions” nume fișier

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:

$ sudo export GREP_OPTIONS=’–color=auto’ GREP_COLOR=’100;8′

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:

$ egrep -v „search_string” nume_fila

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ă:

$ egrep -v „doi” samplefile_.txt

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:

$ egrep -v -e „search_string”/”pattern” -e „search_string”/”pattern”
…. 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ă:

$ egrep -v -e „unu” -e „doi” samplefile_.txt

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:

$ egrep -c „search_string” nume_fila

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ă:

$ egrep -c „This” filename

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:

$ grep -v -c „search_string” nume fișier

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:

$ grep -n „search_string” nume fișier

Exemplu:

$ grep -n „This” samplefile_.txt

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.

$ grep -o -b -b „șir_de_cercetare” nume_de_fișier

Exemplu:

$ grep -o -b -b „Aceasta” nume_de_fișier.txt

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ă.

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.