Lecții din modul (2/2)
Conducte și filtre (grep și |)
Una dintre cele mai puternice caracteristici ale liniei de comandă Linux este capacitatea de a conecta diferite comenzi, astfel încât ieșirea uneia să devină intrarea pentru următoarea. Această tehnică este realizată folosind conducte și este de obicei asociată cu comanda de filtrare a textului grep.
Text de filtrare: grep
Comanda grep (Global Regular Expression Print) caută un anumit șir de text într-unul sau mai multe fișiere și tipărește liniile potrivite:
grep "string" [file_name]Opțiuni utile pentru grep
grep -i "error" server.log: Efectuează o căutare insensibilă la majuscule (ignoră diferența dintre majuscule și litere mici, găsind „Eroare”, „eroare” sau „EROARE”).grep -n "connection" server.log: Afișează numărul liniei împreună cu linia potrivită.grep -v "INFO" server.log: Inversează căutarea, afișând numai rândurile care nu conțin cuvântul cheie specificat.
Înlănțuirea comenzilor: conducta |
Operatorul conductei este reprezentat de bara verticală |. Trimite ieșirea standard a comenzii din stânga direct la intrarea standard a comenzii din dreapta:
[command1] | [command2]De exemplu, dacă un fișier jurnal este mare și doriți să căutați un anumit cuvânt fără a imprima întregul fișier, puteți combina cat și grep:
cat logs/server.log | grep ERRORAceasta citește întregul fișier server.log cu cat, dar în loc să-l imprime pe ecran, transmite fluxul către grep, care filtrează și afișează numai liniile care conțin cuvântul „EROARE”.
Exemple de utilizare și erori comune
Dacă căutați un cuvânt cu litere mici (de exemplu, „post”) într-un fișier care îl conține doar cu majuscule (de exemplu, „POST”), grep nu va returna nimic:
grep "post" logs/access.log
# Output: (no results, search is case-sensitive by default)Pentru a găsi linia, indiferent de cazul ei, utilizați indicatorul -i:
grep -i "post" logs/access.log
# Output:
# 127.0.0.1 - - [22/May/2026:10:10:00 +0000] "POST /login HTTP/1.1" 401 234Dacă fișierul specificat nu există, grep va returna o eroare:
grep "ERROR" nonexistent_file.log
# Output:
# grep: nonexistent_file.log: No such file or directoryÎncercați-l singur
Exercițiul 1: Căutați erori în fișierele jurnal
Filtrați fișierul „logs/server.log” pentru a extrage și a afișa numai liniile care conțin cuvântul „EROARE” (sensibilă la majuscule și minuscule).
Afișează indiciu
Utilizați comanda grep urmată de cuvântul de căutat și calea fișierului.
Soluție disponibilă după 3 încercări
Exercițiul 2: Conducte și filtre
Utilizați comanda cat pentru a citi fișierul „logs/server.log” și direcționați (|) ieșirea acestuia către comanda grep pentru a filtra și a tipări numai liniile care conțin cuvântul „WARNING”.
Afișează indiciu
Conectați cat logs/server.log la grep AVERTISMENT folosind conducta „|” caracter.
Soluție disponibilă după 3 încercări
Exercițiul 3: Căutare fără majuscule
Căutați toate liniile care conțin cuvântul „post” (fie majuscule, fie minuscule) în fișierul „logs/access.log” folosind indicatorul grep corespunzător.
Afișează indiciu
Utilizați grep cu opțiunea -i pentru a ignora diferența dintre majuscule și minuscule.
Soluție disponibilă după 3 încercări