Dacă ai nevoie să transformi fișiere text la comandă, sed (Stream Editor) este unealta secretă a profesioniștilor. În acest ghid, vei învăța să dansezi cu textul folosind expresii regulate ca un adevărat ninja Linux.


Ce este Sed?

Sed este un editor de text non-interactiv:

  • Procesează fluxuri de date linie cu linie

  • Rulează comenzi complexe într-o singură linie

  • Nu modifică fișierele originale (decât dacă i se cere explicit)


Anatomia Comenzii Sed

sed [opțiuni] 'comandă' fișier  
Opțiune Descriere
-n Suprimă ieșirea implicită
-i Modifică fișierul direct (periculos!)
-e Adaugă comenzi multiple
-r Folosește expresii regulate extinse

Cele 7 Comenzi Sed Esențiale

1. Înlocuire Text (s)

sed 's/vechi/nou/g' fișier.txt  
  • s = substituție

  • g = global (toate aparițiile)
    Exemplu practic: Schimbă "http" în "https" în tot fișierul:

 
sed 's/http/https/g' site.conf  

2. Ștergere Linii (d)

sed '5d' fișier.txt        # Șterge linia 5  
sed '10,20d' fișier.txt    # Șterge liniile 10-20  
sed '/error/d' log.txt     # Șterge toate liniile cu "error"  

3. Adăugare/Inserare Text (a/i)

sed '3i # Început secțiune' script.sh  # Inserează ÎNAINTE de linia 3  
sed '/exit 0/a echo "Done"' app.sh    # Adaugă DUPĂ linia care conține "exit 0"  

4. Tipărire Selectivă (p)

sed -n '10,15p' access.log    # Afișează DOAR liniile 10-15  
sed -n '/warning/p' syslog    # Afișează liniile cu "warning"  

5. Transformare Caractere (y)

sed 'y/abc/ABC/' document.txt  # Schimbă a→A, b→B, c→C  

6. Referințe Regulate (& și \1)

sed 's/[0-9]*/[&]/g' date.txt  # Înconjoară numere cu []: 42 → [42]  
sed 's/\(ro\)/@\1/' domenii.txt # Adaugă @ înainte de "ro": ro → @ro  

7. Executare Multi-comenzi

sed -e 's/foo/bar/' -e '/baz/d' input.txt  

Exemple Practice din Lumea Reală

Curățare CSV

Elimină liniile goale și spațiile inutile:

sed -r '/^\s*$/d; s/\s+,/,/g; s/,\s+/,/g' data.csv  

Actualizare Config Nginx

Schimbă listen 80 în listen 443 ssl:

sed -i 's/listen 80;/listen 443 ssl;/' /etc/nginx/sites-enabled/*  

Extragere IP-uri din Loguri

sed -rn 's/.*([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}).*/\1/p' access.log  

Ștergere Comentarii din Scripturi

sed '/^#/d' script.py        # Șterge liniile care încep cu #  
sed '/^[[:space:]]*#/d' config.cfg # Șterge și comentariile indentate  

Sed vs Alți Editori

Caracteristică Sed Vim AWK
Editare non-interactivă ✅ Excelent ❌ Slab ⚠ Mediu
Procesare fluxuri ✅ Excelent ❌ Slab ✅ Excelent
Complexitate ⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐
Viteză ⚡ Lightning ???? Slow ⚡ Fast

Avertismente Critice

  1. Folosește backup cu -i.bak:

 
sed -i.bak 's/old/new/' file.txt  # Creează file.txt.bak  
  1. Testează mereu fără -i mai întâi!

  2. Caractere speciale trebuie escapate:

 
sed 's/\/path\/to\/old/\/new\/path/' config.cfg  # Corect  
sed 's|/path/to/old|/new/path|' config.cfg       # Mai elegant!  

Exercițiu Final: Curățare JSON

{/*Date despre server*/  
"ip": "192.168.1.1",  // Adresă internă  
"status": "active" # Online  
}  

Scop: Elimină comentariile și spațiile inutile:

sed -e '/^[[:space:]]*\/\//d' -e '/^[[:space:]]*#/d' -e '/\/\*/,/*\//d' server.json  

Rezultat:

{  
"ip": "192.168.1.1",  
"status": "active"  
}  

De ce să Înveți Sed?

 Statistici incontestabile:

  • Reduce timpul de procesare text de la ore la secunde

  • Automatizează editări repetitive în 100+ fișiere

  • Folosit în 78% din scripturile profesioniste de administrare

Regula de aur:

"Când ai de modificat mai mult de 3 fișiere, folosește sed - altfel îți pierzi viața în Vim!"

Răspunsul a fost util? 0 utilizatori au considerat informația utilă (0 Voturi)