[
$ sed-n] [-e] skript [-fsoubor] [soubor]
-n
-e skript
-f soubor
soubor
sed kopíruje řádek vstupu do vzorkovacího prostoru.
[adr1[,adr2]]/reg_výraz/instrukce
sed má několik instrukcí, které slouží k modifikaci výstupu.
d(delete)
sed /^#/d <soubory>A tento program supluje /dev/null :)
sed d
n(new)
a(append)
i(insert)
a, ale připojuje před
c(change)
a, ale načtený řádek zruší.
Je možné použít dvě adresy. Potom se všechny řádky mezi nahradí jedním s novým příkazem.
s(substituce)
[adresa[,adresa]s/vzor/náhrada/[g][p][w jmeno]Funkce potom nahradí vzor náhradou. Pokud nejsou uvedeny přepínače, nahrazuje se pouze první výskyt. Náhrada může obsahovat &, kam sed vloží vzor prepinace:
g
p
stdout. Kdyz se bude dělat více substitucí budou se i víckrát psát.
w
p, ale posílá výstup do souboru jméno
p(print)
-n
w(write) file
r(read) jmeno
l
^M apod. nahradí ascii kódem a nebo \ kombinacema (\n,\r atd.)
! {}
for i in *.tif
do
convert "$i" "$(echo "$i" | sed 's/\.tif/.jpg/')"
done
V dalším příkladu předpokládejme, že máme soubory obr0001.jpg, pes13.jpg apod. a budeme je chtít přejmenovat na obr_0001.jpg, pes_13.jpg:
for i in *.jpg
do
mv -i "$i" "$(echo "$i" | sed 's/\([a-z]\)\([0-9]\)/\1_\2/' )"
done
A teď něco složitějšího: Předpokládejme, že máme soubory obr1.jpg až obr2000.jpg, sken_01.jpg až sken_100.jpg a chceme je přejmenovat tak, aby číselný údaj byl vždy čtyřmístný.
for i in *.jpg
do
mv -i "$i" "$(echo "$i" | sed ':1;s/\([^0-9]\)\([0-9]..[^0-9]\)/\10\2/;t1' )"
done
Převod z unix na dos formát textových souborů.
$ sed "$ !s/$/^M/$ s/$/^Z/"
a naopak:
$ sed "s/^M$//$ /^Z$//"