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
-
Folosește backup cu
-i.bak
:
sed -i.bak 's/old/new/' file.txt # Creează file.txt.bak
-
Testează mereu fără
-i
mai întâi! -
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!"