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!