Comanda Sed în Linux/Unix cu exemple

Comanda SED în UNIX înseamnă editor de flux și poate îndeplini o mulțime de funcții pe fișier, cum ar fi căutarea, găsirea și înlocuirea, inserarea sau ștergerea. Deși cea mai comună utilizare a comenzii SED în UNIX este pentru înlocuire sau pentru găsirea și înlocuirea. Folosind SED, puteți edita fișiere chiar și fără a le deschide, ceea ce este o modalitate mult mai rapidă de a găsi și înlocui ceva în fișier, decât deschiderea fișierului respectiv în VI Editor și apoi modificarea acestuia.

  • SED este un editor puternic de flux de text. Poate face inserare, ștergere, căutare și înlocuire (înlocuire).
  • Comanda SED în Unix acceptă expresia regulată, ceea ce îi permite să efectueze potrivirea modelelor complexe.

Sintaxă:

 sed OPTIONS... [SCRIPT] [INPUTFILE...] 

Exemplu:
Luați în considerare fișierul text de mai jos ca o intrare.

 $cat>geekfile.txt>>>     

Ieșire:

 linux is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful. 

Aici s specifică operația de înlocuire. / sunt delimitatori. Unix este modelul de căutare, iar Linux este șirul de înlocuire.

În mod implicit, comanda sed înlocuiește prima apariție a modelului în fiecare linie și nu va înlocui a doua, a treia... apariție din linie. Înlocuirea celei de-a n-a apariții a unui model într-o linie: Folosiți steagurile /1, /2 etc pentru a înlocui prima, a doua apariție a unui model într-o linie. Comanda de mai jos înlocuiește a doua apariție a cuvântului unix cu linux într-o linie.

 $sed 's/unix/linux/2' geekfile.txt 

Ieșire:

 unix is great os. linux is opensource. unix is free os. learn operating system. unix linux which one you choose. unix is easy to learn.linux is a multiuser os.Learn unix .unix is a powerful. 
Înlocuirea întregii apariții a modelului într-o linie: Indicatorul substitute /g (înlocuire globală) specifică comanda sed pentru a înlocui toate aparițiile șirului din linie.
 $sed 's/unix/linux/g' geekfile.txt 

Ieșire:

 linux is great os. linux is opensource. linux is free os. learn operating system. linux linux which one you choose. linux is easy to learn.linux is a multiuser os.Learn linux .linux is a powerful. 
Înlocuirea de la a n-a apariție la toate aparițiile dintr-o linie: Utilizați combinația de /1, /2 etc și /g pentru a înlocui toate modelele de la a n-a apariție a unui model dintr-o linie. Următoarea comandă sed înlocuiește al treilea, al patrulea, al cincilea... cuvânt unix cu cuvânt linux într-o linie.
 $sed 's/unix/linux/3g' geekfile.txt 

Ieșire:

 unix is great os. unix is opensource. linux is free os. learn operating system. unix linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn linux .linux is a powerful. 
Parantezizare primul caracter al fiecărui cuvânt : Acest exemplu sed tipări primul caracter al fiecărui cuvânt în paranteză.
 $ echo 'Welcome To The Geek Stuff' | sed 's/([A-Z])/(1)/g' 

Ieșire:

 (W)elcome (T)o (T)he (G)eek (S)tuff 
Înlocuirea șirului pe un anumit număr de linie: Puteți restricționa comanda sed pentru a înlocui șirul pe un anumit număr de linie. Un exemplu este
 $sed '3 s/unix/linux/' geekfile.txt 

Ieșire:

 unix is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful. 

Comanda sed de mai sus înlocuiește șirul doar pe a treia linie. Duplicarea liniei înlocuite cu steag /p: steagul de tipărire /p tipărește linia înlocuită de două ori pe terminal. Dacă o linie nu are modelul de căutare și nu este înlocuită, atunci /p tipărește linia respectivă o singură dată.

 $sed 's/unix/linux/p' geekfile.txt 

Ieșire:

 linux is great os. unix is opensource. unix is free os. linux is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful. 
Imprimarea numai a liniilor înlocuite: Folosiți opțiunea -n împreună cu marcajul de imprimare /p pentru a afișa numai liniile înlocuite. Aici opțiunea -n suprimă rândurile duplicate generate de indicatorul /p și tipărește liniile înlocuite o singură dată.
 $sed -n 's/unix/linux/p' geekfile.txt 

Ieșire:

 linux is great os. unix is opensource. unix is free os. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful. 

Dacă utilizați -n singur fără /p, atunci sed-ul nu imprimă nimic. Înlocuirea șirului de caractere pe un interval de linii: Puteți specifica un interval de numere de rând la comanda sed pentru înlocuirea unui șir.

 $sed '1,3 s/unix/linux/' geekfile.txt 

Ieșire:

 linux is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful. 

Aici comanda sed înlocuiește liniile cu intervalul de la 1 la 3. Un alt exemplu este

 $sed '2,$ s/unix/linux/' geekfile.txt 

Ieșire:

 unix is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful 

Aici $ indică ultima linie din fișier. Deci comanda sed înlocuiește textul de la a doua linie la ultima linie din fișier. Ștergerea liniilor dintr-un anumit fișier: Comanda SED poate fi folosită și pentru ștergerea liniilor dintr-un anumit fișier. Comanda SED este utilizată pentru a efectua operația de ștergere fără a deschide măcar fișierul
Exemple:
1. Pentru a șterge o anumită linie, spuneți n în acest exemplu

 Syntax: $ sed 'nd' filename.txt Example: $ sed '5d' filename.txt 

2. Pentru a Șterge o ultimă linie

 Syntax: $ sed '$d' filename.txt 

3. Pentru a Șterge linia din intervalul x la y

 Syntax: $ sed 'x,yd' filename.txt Example: $ sed '3,6d' filename.txt 

4. Pentru a șterge de la a n-a până la ultima linie

 Syntax: $ sed 'nth,$d' filename.txt Example: $ sed '12,$d' filename.txt 

5. Pentru a Șterge linia de potrivire a modelului

 Syntax: $ sed '/pattern/d' filename.txt Example: $ sed '/abc/d' filename.txt 


Comanda SED în Linux | Setul 2