Salt la conținutul principal
Modulul 3 · Lecția 2 din 27/11 în curs~15 min
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:

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

Bash
[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:

Bash
cat logs/server.log | grep ERROR

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

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

Bash
grep -i "post" logs/access.log
# Output:
# 127.0.0.1 - - [22/May/2026:10:10:00 +0000] "POST /login HTTP/1.1" 401 234

Dacă fișierul specificat nu există, grep va returna o eroare:

Bash
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

Exercițiu#linux.m3.l2.e1
Încercări: 0Se încarcă…

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).

Se încarcă editorul...
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

Exercițiu#linux.m3.l2.e2
Încercări: 0Se încarcă…

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

Se încarcă editorul...
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

Exercițiu#linux.m3.l2.e3
Încercări: 0Se încarcă…

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.

Se încarcă editorul...
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