Comanda sed (Stream Editor) din Linux este un instrument puternic utilizat pentru prelucrarea textului și modificarea fișierelor. Aceasta permite utilizatorilor să caute, să înlocuiască, să introducă și să șteargă eficient text în fișiere, ceea ce o face o comandă vitală pentru automatizare și scripting. În acest ghid, vom explora modul de utilizare a comenzii sed pentru a actualiza fișiere în Linux cu ajutorul unor exemple practice.

De ce să utilizați comanda Sed?

Comanda sed este utilizată pe scară largă pentru:

Înlocuirea textului – Înlocuiți cu ușurință cuvinte, fraze sau modele în fișiere.
Procesarea pe loturi – Modificarea mai multor fișiere simultan utilizând scripturi.
Eficiență – Procesează rapid fișiere mari fără a le deschide.
Editare în linie – Modificarea fișierelor direct din linia de comandă.
Automatizare – Utilizată în scripturi pentru a gestiona modificările repetitive ale textului.

Sintaxa de bază a comenzii Sed

Sintaxa generală a comenzii sed este:

sed [OPTIONS] 's/old-text/new-text/g' filename

Unde:

  • s – Înseamnă substituție.
  • old-text – Textul care urmează să fie înlocuit.
  • new-text – Textul de înlocuire.
  • g – (Global) Asigură înlocuirea tuturor aparițiilor din linie.
  • filename – Fișierul care urmează să fie modificat.

Cum să utilizați comanda Sed pentru a actualiza fișiere

1. Înlocuirea unui cuvânt într-un fișier

Pentru a înlocui un anumit cuvânt într-un fișier, utilizați:

sed 's/Linux/Ubuntu/g' file.txt

Aceasta înlocuiește prima apariție a cuvântului “Linux” cu “Ubuntu” în fiecare linie a fișierului.txt.

2. Înlocuirea tuturor aparițiilor într-un fișier

Pentru a înlocui toate aparițiile unui cuvânt la nivel global într-un fișier:

sed 's/Linux/Ubuntu/g' file.txt

Indicatorul g asigură înlocuirea fiecărei apariții dintr-un rând.

3. Editarea unui fișier în loc (modificarea directă a fișierului)

Pentru a face modificări direct în fișier fără a afișa rezultatul:

sed -i 's/Linux/Ubuntu/g' file.txt

Opțiunea -i permite editarea in-place, ceea ce înseamnă că fișierul original este modificat fără a fi necesară salvarea unei versiuni separate.

4. Înlocuirea textului numai în anumite rânduri

Pentru a modifica numai anumite linii dintr-un fișier, specificați numărul liniei:

sed '3s/Linux/Ubuntu/' file.txt

Această comandă înlocuiește “Linux” cu “Ubuntu” numai pe linia 3.

5. Ștergerea unei linii care conține un text specific

Pentru a șterge toate liniile care conțin un anumit cuvânt, utilizați:

sed '/unwanted-text/d' file.txt

Aceasta elimină toate liniile care conțin “text nedorit”.

6. Ștergerea unui anumit rând după număr

Pentru a elimina o anumită linie, utilizați:

sed '5d' file.txt

Aceasta șterge linia 5 din fișierul.txt.

7. Inserarea textului înainte de o linie

Pentru a adăuga o linie înainte de un anumit număr de linie:

sed '3i\This is a new line' file.txt

Aceasta inserează “Aceasta este o linie nouă” înainte de linia 3.

8. Inserarea textului după o linie

Pentru a insera o linie după un anumit număr de linie:

sed '3a\This is an appended line' file.txt

Aceasta adaugă “Aceasta este o linie adăugată” după linia 3.

9. Înlocuirea unui cuvânt în mai multe fișiere

Pentru a înlocui text în mai multe fișiere simultan:

sed -i 's/Linux/Ubuntu/g' *.txt

Această comandă modifică toate fișierele .txt din director, înlocuind “Linux” cu “Ubuntu”.

Comenzi Sed avansate

1. Utilizarea simultană a mai multor comenzi Sed

Pentru a efectua mai multe modificări simultan:

sed -i -e 's/Linux/Ubuntu/g' -e 's/Server/Cloud/g' file.txt

Aceasta înlocuiește “Linux” cu “Ubuntu” și “Server” cu “Cloud” în file.txt.

2. Utilizați Sed cu expresii regulate

Pentru a înlocui numere într-un fișier:

sed 's/[0-9]/#/g' file.txt

Aceasta înlocuiește toate cifrele cu #.

3. Extragerea unor linii specifice dintr-un fișier

Pentru a extrage și afișa liniile de la 5 la 10:

sed -n '5,10p' file.txt

Opțiunea -n împiedică imprimarea întregului fișier, afișând doar liniile 5-10.

Cele mai bune practici pentru utilizarea Sed

  1. Faceți întotdeauna o copie de rezervă a fișierelor înainte de a utiliza -i – Preveniți pierderea accidentală de date.
  2. Utilizați expresii regulate – Potrivire puternică a modelelor pentru modificări complexe.
  3. Testați comenzile înainte de a aplica modificările – Rulați sed fără -i pentru a previzualiza rezultatul.
  4. Utilizați scripturi pentru automatizare – Combinați sed cu shell scripting pentru procesarea pe loturi.

Concluzii

Comanda sed este un instrument versatil și eficient pentru actualizarea fișierelor în Linux. Fie că trebuie să înlocuiți text, să ștergeți linii sau să introduceți conținut, sed poate automatiza și simplifica aceste sarcini. Prin stăpânirea comenzii sed, vă puteți îmbunătăți fluxul de lucru și crește productivitatea în administrarea Linux și în scripting.