Comanda Grep în Linux

Grep Command Linux



Comanda Grep (global regular expression print) este cel mai puternic și utilizat regulat utilitar de linie de comandă Linux. Folosind Grep, puteți căuta informații utile prin specificarea unui criteriu de căutare. Se caută un anumit model de expresie într-un fișier specificat. Când găsește o potrivire, imprimă toate liniile unui fișier care se potrivește cu modelul specificat. Este util când trebuie să filtrați prin fișiere jurnal mari.

În acest articol, vom explica utilizarea utilității grep cu diferite exemple. Vom folosi Debian 10 pentru a explica comenzile și metodele menționate în acest articol.







Instalarea Grep

Grep vine instalat în majoritatea distribuțiilor Linux. Cu toate acestea, în cazul în care lipsește din sistemul dvs., îl puteți instala folosind următoarea metodă în Terminal:



$sudo apt-get install prindere

Folosind Grep

Iată sintaxa de bază a comenzii grep. Începe cu grep urmat de câteva opțiuni și criterii de căutare și apoi se termină cu numele fișierului.



$prindere [Opțiuni]MODEL[FIŞIER...]

Căutați fișiere

Pentru a căuta un nume de fișier într-un director care conține un șir specific în el, puteți utiliza grep în felul următor:





$eu sunt -la | prindere -işir

De exemplu, pentru a căuta un nume de fișier care conține un șir Test , comanda ar fi:

$eu sunt-la| prindere–ITest

Această comandă listează toate fișierele care conțin șirul Test .



Căutați un șir într-un fișier

Pentru a căuta un șir într-un anumit fișier, puteți utiliza următoarea sintaxă de comandă:

$prinderenumele fișierului șir

De exemplu, pentru a căuta un șir Test într-un fișier numit testfile1 , am folosit următoarea comandă :

$prinderefișierul de testare al angajaților1

Rezultatul de mai sus a returnat propoziția din testfile1 care conține șirul angajat .

Căutați un șir în mai multe fișiere

Pentru a căuta un șir în mai multe fișiere, puteți utiliza următoarea sintaxă de comandă:

$prindereșir fișier nume1 fișier2

De exemplu, pentru a căuta un angajat șir în cele două fișiere testfile1 și testfile2, am folosit următoarea comandă:

$prindereangajat fișier test1 fișier test2

Comanda de mai sus va lista toate liniile care conțin șirul angajat din ambele fișiere testfile1 și testfile2.

De asemenea, puteți utiliza un caracter wildcard dacă toate numele de fișiere încep cu același text.

$prinderenumele fișierului șir*

De exemplu, dacă luăm exemplul de mai sus în care erau numele fișierelor noastre testfile1 și testfile2 , comanda ar fi:

$prinderefișier test de angajat*

Căutați un șir într-un fișier ignorând majusculele șirului

Cel mai adesea, ați întâlnit acest lucru atunci când căutați ceva folosind grep, dar nu primiți o ieșire. Acest lucru se întâmplă din cauza unei nepotriviri de cazuri în timp ce căutați un șir. La fel ca în exemplul nostru, dacă folosim greșit Angajat in loc de angajat , va reveni la zero deoarece fișierul nostru conține șirul angajat cu litere mici.

Puteți spune grep să ignore cazul șirului de căutare utilizând steagul –i după grep după cum urmează:

$prindere–Nume fișier șir

Prin utilizarea steagului –i, comanda va efectua căutarea insensibilă la majuscule și va returna toate liniile care conțin șirul angajat în el fără a lua în calcul literele sunt cu majuscule sau minuscule.

Căutați folosind expresia regulată

Dacă este utilizată corect, expresia regulată este o caracteristică foarte eficientă în grep. Cu comanda Grep, puteți defini o expresie regulată cu un cuvânt cheie de început și de sfârșit. Procedând astfel, nu va trebui să tastați întreaga linie cu comanda grep. Următoarea sintaxă poate fi utilizată în acest scop.

$prinderecuvânt cheie de pornire.*sfârșitNume fișier cuvânt cheie

De exemplu, pentru a căuta o linie într-un fișier numit testfile1 care începe cu șirul acesta și se termină cu datele șirului, am folosit următoarea comandă:

$prindereacest.*data testfile1

Se va imprima întreaga linie din testfile1 care conține expresia (cuvântul cheie inițial acesta și datele cuvântului cheie final).

Imprimați un anumit număr de linii după / înainte de șirul de căutare

Puteți afișa, de asemenea, numărul specific de linii dintr-un fișier înainte / după o potrivire a șirului împreună cu șirul potrivit. În acest scop se poate utiliza următoarea sintaxă:

$prindere -LA <N>numele fișierului șir

Se va afișa N număr de linii după ce șirul este asociat în fișierul specificat, inclusiv șirul asociat.

De exemplu, acesta este exemplul nostru de fișier numit testfile2 .

Următoarea comandă va afișa linia potrivită care conține șirul angajat , împreună cu cele 2 linii de după acesta.

$prindere-LA2–Fișierul de testare al angajaților2

În mod similar, pentru a afișa N număr de linii înainte de șirul potrivit într-un anumit fișier, utilizați următoarea sintaxă:

$prindere -B <N>numele fișierului șir

Pentru a afișa N număr de linii în jurul șirului într-un anumit fișier, utilizați următoarea sintaxă:

$prindere -C <N>numele fișierului șir

Evidențierea căutării

Grep imprimă în mod implicit liniile potrivite, dar nu arată care porțiune a liniei este potrivită. Dacă utilizați opțiunea –color cu grep, aceasta va arăta unde șirurile de prelucrare apar în fișierul dvs. Grep utilizează în mod implicit culoarea roșie pentru evidențiere.

În acest scop se poate utiliza următoarea sintaxă:

$prinderenumele fișierului șir--culoare

Numărarea numărului de meciuri

Dacă doriți să numărați de câte ori apare un anumit cuvânt într-un anumit fișier, puteți utiliza opțiunea grep cu –c. Acesta returnează doar numărul de meciuri, mai degrabă decât meciurile în sine. În acest scop se poate utiliza următoarea sintaxă:

$prindere–Nume fișier șir

Acesta este exemplul nostru de fișier:

Următorul este un exemplu de comandă care a returnat de câte ori a fost cuvântul fişier a apărut într-un fișier numit testfile3 .

Căutare inversată

Uneori, doriți să efectuați o căutare inversă care afișează toate liniile, cu excepția celor care se potrivesc cu intrarea. Pentru a face acest lucru, pur și simplu utilizați steagul –v urmat de grep:

$prindere–Nume fișier șir

De exemplu, pentru a afișa toate liniile dintr-un fișier testfile3 care nu conțin cuvântul cont în ele, am folosit următoarea comandă:

$prindere–V cont fișier test3

Folosirea Grep cu alte comenzi

Grep poate fi, de asemenea, utilizat pentru a filtra rezultatul necesar din diferite comenzi de ieșire. De exemplu, din apt - listă instalată ieșire comandă, doriți să găsiți numai pachetele care au fost instalate automat, puteți filtra rezultatul folosind grep după cum urmează:

$apt--instalatlistă| prindereautomat

În mod similar, lscpu oferă informații detaliate despre CPU. Dacă sunteți doar interesat de informațiile referitoare la arhitectura CPU, le puteți filtra folosind următoarea comandă:

$lscpu| prindereArhitectură

În acest articol, am descris câteva exemple care vă vor ajuta să înțelegeți comenzile grep și să le utilizați în diferite condiții. A avea un control puternic asupra comenzii grep poate economisi mult timp dacă aveți nevoie să vă uitați la configurații mari sau fișiere jurnal și să parcurgeți informații utile prin intermediul acestora.