[
$ sed-n
] [-e
] skript [-f
soubor] [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$//"