Skip to main content

Cyber AI România

Cum folosești grep ca să cauți rapid texte în fișiere și loguri

grep este una dintre cele mai utile comenzi Linux atunci când vrei să găsești rapid un cuvânt, o eroare, un IP, un utilizator sau o linie importantă într-un fișier. Este folosită des în administrarea Linux, depanare, analiză de loguri și cybersecurity defensiv, pentru că poate filtra rapid informația din fișiere mari.

Manualul Linux descrie grep ca unealtă care caută modele în fișiere și afișează liniile care se potrivesc. Poate lucra cu texte simple, expresii regulate și opțiuni pentru căutare recursivă, ignorarea diferenței dintre litere mari/mici, afișarea numerelor de linie sau includerea contextului din jurul rezultatului.

Căutare simplă într-un fișier

Forma de bază este:

grep "text_cautat" fisier.txt

Exemplu:

grep "error" aplicatie.log

Această comandă afișează toate liniile din aplicatie.log care conțin cuvântul error.

Dacă vrei să cauți un text cu spații, pune-l între ghilimele:

grep "failed login" auth.log

Fără ghilimele, shell-ul poate interpreta cuvintele ca argumente separate.

Caută fără să conteze literele mari sau mici

Implicit, grep face diferență între Error, error și ERROR. Pentru căutare case-insensitive, folosește -i:

grep -i "error" aplicatie.log

Asta este foarte util în loguri, unde mesajele pot fi scrise diferit de la o aplicație la alta. GNU Grep include opțiuni pentru controlul potrivirii și al afișării rezultatelor, inclusiv forme scurte și lungi pentru multe opțiuni.

Afișează numărul liniei

Când cauți într-un fișier de configurare sau într-un log mare, este util să știi pe ce linie apare rezultatul:

grep -n "PermitRootLogin" /etc/ssh/sshd_config

Rezultatul poate arăta așa:

34:PermitRootLogin no

Asta îți spune că potrivirea este la linia 34. Este foarte util când vrei să deschizi fișierul în editor și să ajungi rapid la zona respectivă.

Caută în toate fișierele dintr-un folder

Pentru căutare recursivă într-un director, folosește -r:

grep -r "database" /var/www/site/

Opțiunea -r citește recursiv fișierele din directoare; manualul grep precizează că urmărește linkurile simbolice doar dacă acestea sunt date explicit în linia de comandă.

Dacă vrei și numărul liniei:

grep -rn "database" /var/www/site/

Pentru căutare fără diferență între litere mari și mici:

grep -rni "error" /var/log/

Atenție: /var/log/ poate conține fișiere mari și fișiere pentru care ai nevoie de drepturi administrative. Dacă primești „Permission denied”, poți folosi sudo, dar doar dacă ai motiv clar:

sudo grep -rni "failed" /var/log/

Caută doar în anumite tipuri de fișiere

Dacă vrei să cauți doar în fișiere .conf:

grep -rni --include="*.conf" "listen" /etc/

Dacă vrei să excluzi fișiere .gz sau directoare de cache:

grep -rni --exclude="*.gz" "error" /var/log/

Acest lucru este util pentru loguri arhivate sau proiecte mari, unde nu vrei să cauți în fișiere inutile.

Afișează contextul din jurul rezultatului

Uneori linia găsită nu este suficientă. Ai nevoie de câteva linii înainte și după.

Două linii după rezultat:

grep -A 2 "error" aplicatie.log

Două linii înainte:

grep -B 2 "error" aplicatie.log

Două linii înainte și după:

grep -C 2 "error" aplicatie.log

GNU Grep documentează opțiunile -A, -B și -C pentru afișarea liniilor de context în jurul potrivirilor.

Folosește grep cu pipe

grep devine foarte puternic când îl combini cu alte comenzi.

Caută un proces:

ps aux | grep nginx

Caută un serviciu în lista systemd:

systemctl list-units --type=service | grep ssh

Filtrează conexiunile active:

ss -tulpen | grep ":22"

Caută erori în logurile systemd:

journalctl -b | grep -i "failed"

Aici grep nu caută într-un fișier direct, ci filtrează rezultatul altei comenzi.

Caută linii care NU conțin un text

Opțiunea -v inversează rezultatul. Afișează liniile care nu conțin termenul căutat:

grep -v "INFO" aplicatie.log

Exemplu practic: dacă un log are multe linii INFO, dar vrei să vezi restul mesajelor:

grep -v "INFO" aplicatie.log | less

Numără potrivirile

Pentru a număra câte linii se potrivesc:

grep -c "error" aplicatie.log

Pentru căutare recursivă cu număr pe fișier:

grep -rc "error" /var/log/

Rețetă rapidă pentru loguri

Când investighezi un log, începe simplu:

grep -i "error" aplicatie.log
grep -i "failed" aplicatie.log
grep -i "denied" aplicatie.log
grep -i "timeout" aplicatie.log

Pentru autentificări SSH pe Ubuntu/Debian:

sudo grep -i "failed password" /var/log/auth.log

Pentru loguri mari, combină cu less:

sudo grep -i "failed password" /var/log/auth.log | less

grep nu rezolvă singur problema, dar îți arată rapid unde să te uiți. Folosit corect, economisește timp enorm când cauți erori, configurări, utilizatori, IP-uri, procese sau evenimente suspecte. Începe cu opțiunile de bază: -i, -n, -r, -v, -c, -A, -B și -C. Sunt suficiente pentru majoritatea situațiilor reale.

Surse folosite

  • GNU Grep Manual — opțiuni de linie de comandă.
  • Linux man page — grep(1).
  • GNU Grep Manual — linii de context cu -A, -B, -C.
Facebook
X
WhatsApp

Te-ar putea interesa si: