Cum să utilizați Sed în Linux

Sed înseamnă editor de flux. Este un editor bazat pe linie de comandă pentru Linux. Utilizarea populară a sed este pentru editarea fișierelor ca parte a unui script de automatizare în Linux, deoarece editorii obișnuiți necesită intrare activă a utilizatorului și nu pot edita fișiere în afara ecranelor editorului. Sed este cel mai frecvent folosit pentru a găsi și înlocui din linia de comandă.

Acest tip de editor de text poate fi, de asemenea, clasificat ca un editor de text neinteractiv.

Să vedem câteva opțiuni comune pentru editarea fișierelor folosind Sed. Vom lua ca exemplu următorul fișier:

$: cat test.txt Un câine maro rapid a sărit peste pisica leneșă. Sistem de operare Linux. Pădurea de lângă casa mea are o pisică și lupi. 

Căutați și înlocuiți

Pentru a căuta un șir într-un fișier și a înlocui cu un alt șir, rulați:

sed -i "s/cat/fox/g" test.txt

Aici -i flag indică sedului să scrie modificările în fișier. Fără acest steag, sed va afișa doar fișierul cu șirul modificat.

În ghilimele, avem s/pisică/vulpe/g. The s este pentru comanda de căutare și înlocuire a sed. Apoi avem șirul care trebuie căutat, adică pisică. Apoi șirul cu care să-l înlocuiască, adică, vulpe. În sfârșit, avem opționalul g, care instruieste sed pentru a înlocui toate aparițiile pe toate liniile fișierului. Fara g, sed va înlocui doar prima apariție a pisică pe fiecare linie.

Regex poate fi folosit și aici.

sed -i "s/f[a-z]*\./cat\./g"

Introduce

Pentru a insera text înaintea unei linii cu un șir potrivit, utilizați:

sed -i "/cat/i Start:" test.txt

Aici, pisică este șirul căutat și Start: este șirul de introdus înaintea liniei în care se găsește șirul căutat.

În mod similar, pentru a insera text după o linie, utilizați:

sed -i "/fox/a End." test.txt

Șterge

Pentru a șterge o linie care conține un subșir, utilizați:

sed -i "/Linux/d" test.txt

Pentru a șterge o linie cu număr de linie, de ex. prima linie, folosește:

sed -i '1d' test.txt

Combinarea mai multor funcții

Pentru a combina mai multe funcții, de ex. caută și înlocuiește, șterge, într-o singură comandă, -e se poate folosi steag.

sed -i -e "s/fox/cat/g" -e '2d' test.txt

? Noroc!