grep în Linux / Bash

Procesare și filtrare text POSIX / GNU Grep

Caută linii care se potrivesc cu un tipar sau o expresie regulată în fișiere.

Sintaxă comandă
grep [opțiuni] tipar [fișier...]

Ce face grep

Comanda grep (Global Regular Expression Print) este cel mai puternic și folosit utilitar de căutare de text din linia de comandă. Scanează fișiere sau fluxuri de intrare linie cu linie și afișează doar rândurile care conțin tiparul dorit.

Acceptă expresii regulate extinse (ERE prin -E sau egrep), căutare recursivă în subdirectoare (-r) și excluderi (-v).

Opțiuni și argumente

Opțiune / Parametru Descriere
-i, --ignore-case Ignoră diferența dintre majuscule și minuscule.
-r, -R, --recursive Caută recursiv în toate fișierele din toate subdirectoarele.
-n, --line-number Afișează numărul liniei din fișier unde a fost găsită potrivirea.
-v, --invert-match Inversează potrivirea: afișează doar liniile care NU conțin tiparul căutat.
-c, --count Afișează doar numărul total de linii potrivite, nu conținutul lor.
-E, --extended-regexp Activează expresiile regulate extinse (operatori |, +, ?).
-w, --word-regexp Potrivește doar cuvinte întregi, nu părți din cuvinte.

Exemple

Exemplul 1: Căutare simplă insensibilă la majuscule

Căutăm cuvântul ‘eroare’ indiferent dacă e scris cu literă mare sau mică.

cat << 'EOF' > server.log
[INFO] Aplicatia a pornit
[ERROR] Baza de date nu raspunde
[warning] Conexiune lenta
[error] Timeout la cerere
EOF
grep -i "error" server.log

Rezultat

[ERROR] Baza de date nu raspunde
[error] Timeout la cerere

Exemplul 2: Filtrare inversă (excluderea comentariilor)

Opțiunea -v ascunde rândurile care încep cu diez (#) sau sunt goale.

cat << 'EOF' > config.cfg
# Setari retea
PORT=80
# Setari cache
CACHE=true
EOF
grep -v "^#" config.cfg

Rezultat

PORT=80
CACHE=true

Greșeli frecvente

  • Uitarea ghilimelelor în jurul tiparului când acesta conține spații sau caractere speciale de shell (cum ar fi * sau ?), ceea ce face ca shell-ul să le expandeze greșit înainte ca grep să le primească.

Comenzi înrudite

  • find: Caută fișiere și directoare în mod recursiv pe baza numelui, tipului, mărimii sau datei.
  • awk: Limbaj de procesare a textului structurat pe coloane, ideal pentru rapoarte și extragere de date.
  • sed: Editor de flux (stream editor) pentru transformarea, înlocuirea și filtrarea automată a textului.