grep

Comandă egrep Linux cu exemple

Comandă egrep Linux cu exemple
Comanda egrep aparține familiei comenzii grep care este utilizată pentru căutarea de tipare î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, de la o linie la alta și tipărește linia (rândurile) care conține șirul de căutare / expresia regulată. În acest articol, vom explica 15 exemple utile ale comenzilor egrep care vor ajuta începătorii și chiar experții să efectueze căutări semnificative în Linux Am efectuat aceste exemple pe un sistem Debian 10 Buster, dar acestea pot fi reproduse cu ușurință pe majoritatea distribuțiilor Linux.

Exemplul 1: Căutarea unui anumit șir într-un fișier

Aceasta este cea mai comună utilizare a comenzii egrep. Ceea ce faceți este să specificați un șir pe care doriți să îl căutați și numele fișierului în care doriți să căutați acel șir. Rezultatul afișează apoi întreaga linie care conține șirul căutat.

Sintaxă:

$ egrep numele de fișier „search_string”

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

Exemplul 2: Căutarea unui șir specific în mai multe fișiere

Cu comanda egrep, puteți căuta un șir între mai multe fișiere care se află î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.

Sintaxă:

$ egrep "căutare_string" nume_fișier_model

Exemplu:

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

$ egrep „debian” *.txt

Comanda a tipărit toate liniile, împreună cu numele de fișiere care conțin cuvântul „debian” din toate .fișiere txt din directorul curent.

Exemplul 3: Căutarea recursivă a șirului în întregul director

Când doriți să căutați un șir în toate fișierele dintr-un director și subdirectoarele sale, puteți face acest lucru utilizând semnalizatorul -r cu comanda egrep.

Sintaxă:

$ egrep -r "șir_căutare" *

Exemplu:

În acest exemplu, caut cuvântul „eșantion” în fișierele întregului director curent (Descărcări).

$ egrep -r "eșantion" *

Rezultatele conțin toate liniile, împreună cu numele de fișiere, care conțin cuvântul „eșantion” din toate fișierele din directorul Descărcări și din subdirectoarele sale.

Exemplul 4: efectuarea unei căutări care să nu distingă majusculele și minusculele

Cu steagul -i, puteți utiliza comanda egrep pentru a imprima rezultatele pe baza unui șir de căutare, fără a fi nevoie să vă faceți griji cu privire la cazul său.

Sintaxă:

$ egrep -i "search_string" nume de fișier

Exemplu:

Aici, caut cuvântul „debian” și vreau ca rezultatele să afișeze toate liniile din fișierul care conține cuvântul „debian” sau „Debian, indiferent de cazul său.

$ egrep -i "search_string" nume de fișier

Puteți vedea cum steagul -i m-a ajutat să aduc toate liniile care conțin șirul de căutare printr-o căutare „nesensibilă” la majuscule.

Exemplul 5: Căutarea unui șir ca un cuvânt complet și nu ca un șir secundar

Când căutați în mod normal un șir prin egrep, acesta imprimă toate cuvintele care conțin șirul ca un șir secundar. De exemplu, căutarea șirului „activat” va imprima toate cuvintele care conțin șirul „activat” precum „activat”, „numai”, „monitor”, „clonare” etc. Dacă doriți ca rezultatele să afișeze doar cuvântul „pornit” ca un cuvânt complet și nu ca un șir secundar, puteți utiliza steagul -w cu egrep.

Sintaxă:

$ egrep -w numele fișierului „căutare_string”

Exemplu:

Aici caut șirul „activat” într-un fișier exemplu:

$ egrep -i „on” samplefile.txt

Puteți vedea în rezultatul de mai sus că conține și cuvântul „numai”. Cu toate acestea, nu asta îmi doresc, deoarece caut exclusiv cuvântul „pe”. Deci, 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 „activat” ca un cuvânt întreg.

Exemplul 6: Tipărirea numai a numelor de fișiere care conțin șirul

Uneori dorim să preluăm doar numele fișierelor care conțin un șir specific, mai degrabă decât să tipărim liniile care îl conțin. Acest lucru se poate face folosind steagul -l (L minusculă) cu comanda egrep.

Sintaxă:

$ egrep -l "căutare_string" nume_fișier_model

Exemplu:

Aici sunt în căutarea șirului „eșantion” în toate .fișiere txt din directorul curent:

$ egrep -l eșantion *.txt

Rezultatele căutării imprimă numai numele fișierelor care conțin șirul specificat.

Exemplul 7: Tipărirea numai șirului de căutare dintr-un fișier

În loc să imprimați întreaga linie care conține șirul de căutare, puteți utiliza comanda egrep pentru a imprima șirul în sine. Șirul va fi tipărit de câte ori apare în fișierul specificat.

Sintaxă:

$ egrep -o "search_string" nume de fișier

Exemplu:

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

$ egrep -o Acest exemplu de fișier_.txt

Notă: Această utilizare a comenzii este utilă atunci când căutați un șir bazat pe un model de expresie regulată. Vom explica expresiile regulate în detaliu într-unul dintre exemplele următoare.

Exemplul 8: Afișarea unui număr de linii înainte, după sau în jurul șirului de căutare

Uneori este foarte important să cunoașteți contextul dintr-un fișier în care este utilizat un anumit șir. 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 număr specific de linii înainte, după și înconjurătoare.

Acesta este exemplul de fișier text pe care îl voi folosi pentru a explica exemplele următoare:

N număr de linii După șirul de căutare:

Folosind steagul A în modul următor, se va afișa linia care conține șirul de căutare și numărul N de linii după acesta:

$ egrep -A numele fișierului „căutare_string”

Exemplu:

$ egrep -A 2 "eșantion" fișier eșantion.txt

N număr de linii Înainte de șirul de căutare:

Folosind steagul B în modul următor se va afișa linia care conține șirul de căutare și numărul de linii N dinaintea acestuia:

$ egrep -B numele de fișier „căutare_string”

Exemplu:

$ egrep -B 2 fișier eșantion „eșantion”.txt

N număr de linii Înainte de șirul de căutare:

Utilizarea steagului C în modul următor va afișa linia care conține șirul de căutare și numărul N de linii înainte și după acesta:

$ egrep -C numele fișierului „căutare_string”

Exemplu:

$ egrep -C 2 fișier eșantion „eșantion”.txt

Exemplul 9: potrivirea expresiei 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.

Sintaxă:

$ egrep numele fișierului „RegularExpressions”

Să ne explicăm cum puteți utiliza expresii regulate în căutarea dvs. egrep:

Operator de repetare Utilizare
? Elementul precedent înainte ? este opțional și se potrivește maxim o dată

* Elementul precedent înainte de * va fi egalat de zero sau de mai multe ori
+ Elementul precedent înainte de + se va potrivi de una sau de mai multe ori
n Elementul precedent se potrivește exact de câte ori.
n, Elementul precedent se potrivește de mai multe ori
, m Elementul precedent se potrivește de maximum 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 sunt potrivite:

începând cu „Gnome” și terminând cu „programe”

Exemplul 10: Evidențierea șirului de căutare

Când setați variabila de mediu GREP_OPTIONS ca mai jos, obțineți rezultatul cu șirul / modelul de căutare evidențiat în rezultate:

$ sudo export GREP_OPTIONS = '- color = auto' GREP_COLOR = '100; 8'

Apoi, puteți căuta șirul în orice mod pe care l-am descris în exemplele acestui articol.

Exemplul 11: Efectuarea căutării inversate într-un fișier

Prin căutare inversată, înseamnă 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 exemplu de fișier pentru a explica căutarea inversată prin egrep. Am imprimat conținutul fișierului folosind comanda cat:

Sintaxă:

$ egrep -v "search_string" nume de fișier

Exemplu:

Din fișierul eșantion pe care l-am menționat, dorim să omitem linia care conține cuvântul „doi” în ieșire, prin urmare vom folosi următoarea comandă:

$ egrep -v "two" samplefile_.txt

Puteți vedea cum rezultatul conține totul din fișierul eșantion, cu excepția celei de-a doua linii care conținea șirul de căutare „doi”.

Exemplul 12: Efectuarea căutării inversate pe baza mai multor criterii / model de căutare

Cu steagul -v, puteți face, de asemenea, comanda egrep pentru a efectua o căutare inversată bazată pe mai multe șiruri de căutare / model.

Vom folosi același fișier eșantion pe care l-am menționat în exemplul 11 ​​pentru a explica acest scenariu.

Sintaxă:

$ egrep -v -e "șir_căutare" / ”tipar” -e „șir_căutare” / ”tipar”
… nume de fișier

Exemplu:

Din fișierul eșantion pe care l-am menționat, dorim să omitem liniile care conțin cuvintele „unu” și „două” în ieșire, prin urmare vom folosi următoarea comandă:

$ egrep -v -e „one” -e "two" samplefile_.txt

Am furnizat două cuvinte pentru a omite utilizarea steagului -e, prin urmare, ieșirea va apărea după cum urmează:

Exemplul 13: Tipărirea 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 utiliza comanda egrep pentru a număra și imprima numărul de linii potrivite cu șirul. Acest număr poate fi preluat folosind steagul -c cu comanda egrep.

Sintaxă:

$ egrep -c "file_string" nume de fișier

Exemplu:

În acest exemplu, vom folosi steagul -c pentru a număra numărul de linii care conțin cuvântul „Acesta” în fișierul nostru de eșantion:

$ egrep -c „Acest” nume de fișier

De asemenea, puteți utiliza funcția de căutare inversată aici pentru a număra și imprima numărul de linii care nu conțin șirul de căutare: 

$ grep -v -c numele fișierului „căutare_string”

Exemplul 14: Afișarea numărului de linie la care se potrivește șirul

Cu steagul -n, puteți face comanda egrep pentru a imprima linia potrivită împreună cu numărul liniei care conține șirul de căutare.

Sintaxă:

$ grep -n "search_string" nume de fișier

Exemplu:

$ grep -n „Acest” 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 în fișier în care se potrivește șirul de căutare

Dacă doriți să cunoașteți poziția din fișierul în care există șirul de căutare, puteți utiliza semnalul -b cu comanda egrep.

$ grep -o -b numele fișierului „căutare_string”

Exemplu:

$ grep -o -b "Acest” samplefile_.txt

Rezultatele căutării imprimă decalajul de octeți al fișierului în care există cuvântul de căutare.Aceasta a fost o utilizare detaliată a comenzii egrep. Utilizând o combinație a steagurilor explicate în acest articol, puteți efectua căutări mai semnificative și mai complexe în fișierele dvs.

Cele mai bune emulatoare pentru console de jocuri pentru Linux
Acest articol va enumera programele populare de emulare a consolei de jocuri disponibile pentru Linux. Emularea este un strat de compatibilitate softw...
Best Linux Distros for Gaming in 2021
The Linux operating system has come a long way from its original, simple, server-based look. This OS has immensely improved in recent years and has no...
Cum să capturați și să transmiteți în flux sesiunea de jocuri pe Linux
În trecut, jocurile erau considerate doar un hobby, dar cu timpul industria jocurilor a cunoscut o creștere imensă în ceea ce privește tehnologia și n...