Sed
označava stream editor. To je uređivač baziran na naredbenom retku za Linux. Popularna upotreba sed-a je za uređivanje datoteka(a) kao dijela skripte za automatizaciju u Linuxu, kao i uobičajeni uređivači zahtijevaju aktivan korisnički unos i ne mogu uređivati datoteke izvan ekrana uređivača. Sed se najčešće koristi za pronalaženje i zamjenu iz naredbenog retka.
Ova vrsta uređivača teksta također se može kategorizirati kao neinteraktivni uređivač teksta.
Pogledajmo neke uobičajene opcije za uređivanje datoteka pomoću Sed-a. Uzet ćemo sljedeću datoteku kao primjer:
$: cat test.txt Brzi smeđi pas preskočio je lijenu mačku. Linux operativni sustav. U šumi u blizini mog doma ima i mačku kao i vukove.
Traži i zamijeni
Da biste potražili niz u datoteci i zamijenili ga drugim nizom, pokrenite:
sed -i "s/mačka/lisica/g" test.txt
Evo, -i
flag nalaže sed-u da upiše promjene u datoteku. Bez ove zastave, sed
samo će prikazati datoteku s promijenjenim nizom.
U navodnicima imamo s/mačka/lisica/g
. The s
je za naredbu pretraživanja i zamjene sed
. Zatim imamo niz koji treba pretraživati, a to je mačka
. Zatim niz kojim ga treba zamijeniti, tj. lisica
. Konačno, imamo opciju g
, koji upućuje sed
za zamjenu svih pojavljivanja u svim recima datoteke. Bez toga g
, sed će zamijeniti samo prvo pojavljivanje mačka
na svakoj liniji.
Ovdje se također može koristiti Regex.
sed -i "s/f[a-z]*\./mačka\./g"
Umetnuti
Da biste umetnuli tekst ispred retka s podudarnim nizom, koristite:
sed -i "/cat/i Start:" test.txt
Ovdje, mačka
je traženi niz i Početak:
je niz za unos prije retka u kojem se nalazi traženi niz.
Slično, za umetanje teksta iza retka koristite:
sed -i "/lisica/a Kraj." test.txt
Izbrisati
Da biste izbrisali redak koji sadrži podniz, koristite:
sed -i "/Linux/d" test.txt
Za brisanje reda s brojem retka, npr. prvi red, koristite:
sed -i '1d' test.txt
Kombiniranje više funkcija
Za kombiniranje više funkcija, npr. pretraži i zamijeni, izbriši, u jednoj naredbi, -e
može se koristiti zastava.
sed -i -e "s/fox/cat/g" -e '2d' test.txt
? Živjeli!