Î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–ITestAceastă 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 șirDe 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ților1Rezultatul 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șier2De 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 test2Comanda 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 șirPrin 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 cheieDe 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 testfile1Se 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 șirSe 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 șirPentru 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 șirEvidenț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--culoareNumă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 șirAcesta 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 șirDe 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 test3Folosirea 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.