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>>>$sed 's/unix/linux/' geekfile.txt>
Ieșire:
model de design singleton java
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.
turnat în sql
$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:
șir de convertor până în prezent
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:
anulați ultima comitere
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
ex de nume de utilizator
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