sed(1) sed(1)
sed - folyamszerkeszt (stream editor)
sed [-n] [-g] [-e script ] [-f sfile ] [ file ] ...
A `sed' program a megnevezett fjlokat (alaprtelmezs szerint a standard
bemenetet) a szabvnyos kimenetre msolja, de kzben egy parancsokat tar-
talmaz szkriptnek megfelelen megszerkeszti.
A `-e' opci az egyszer szerkesztst jelenti: a szerkeszt parancsot a
kvetkez argumentumbl veszi. Amennyiben tbb `-e' is van a parancssorban,
megjelensk sorrendjben hajtja ket vgre. Amennyiben csak egyetlen `-e'
opci van s nincs `-f', a `-e' elhagyhat.
A `-f' opci azt eredmnyezi, hogy a parancsokat az "sfile" fjlbl veszi.
Amennyiben tbb is van bellk, megjelensk sorrendjben kerlnek vgrehajt-
sra. A `-e' s `-f' opcik keverhetk.
A `-g' opci azt eredmnyezi, mintha minden helyettestsi parancsnak `g'
vgzdse lenne.
A `-n' opci elnyomja az alaprtelmezett kimenetet.
A szkript soronknt egy parancsot tartalmaz az albbi forma szerint:
[cm [, cm] ] fggvny [argumentumok]
ltalban a sed ciklikusan bemsol az aktulis szvegpufferbe egy sort a
bemenetrl, azutn sorra alkalmazza azokat a parancsokat, amelyek a
cm(ek) alapjn a sorra vonatkoznak, vgl a puffert a szabvnyos kimenetre
msolja s trli.
A `-n' opci elnyomja a normlis kimenetet, gy csak a `p' s `w' parancsok
kimenete kszl el.
Nhny parancs (n, N) sajt sorolvasst vgez, s nhny msik (d, D) a szkript
minden tovbbi utastst tugorja. (A `D' parancs elnyomja a szvegpuffer
trlst, amely normlisan bekvetkezne a kvetkez ciklus eltt.)
Azt is hasznos tudni, hogy ltezik egy msodik puffer (`hold space'),
amelyik msolhat, hozzfzhet vagy felcserlhet az aktulis szvegpufferrel.
A cmzs egy decimlis szmjegy, `$'-jel, vagy tartalmi cmzs lehet. A dec-
imlis jegy a legels beolvasott sor esetn 1, s folyamatosan egyesvel
nvekszik az sszes bemeneti fjl sorain keresztl. A `$'-jel az utols
bemeneti sort jelenti.
A tartalmi cmzs egy `/szablyos kifejezs/' az ed (1) stlusban, a kvetkez
klnbsgekkel:
(1) A `0 jelsorozat egy pufferbe gyazott jsor-jellel egyezik meg, `'
pedig egy tab-bal.
(2) Cmek nlkli parancssor minden puffert kivlaszt.
(3) Egy cmzssel rendelkez parancssor minden olyan puffert kivlaszt,
amely megfelel a cmzsnek.
(4) Kt cmzssel rendelkez parancssor egy tartomnyt vlaszt ki, melybe
belertendk a megadott hatrok is. A tartomny annl az els bemeneti
puffernl kezddik, amely megfelel az els cmzsnek, s annl vgzdik,
amely ezutn elszr felel meg a msodiknak. Amennyiben a msodik cmzs
egy szm, amely kisebb vagy egyenl, mint az elsnek kivlasztott sor
szma, csak egy sor kerl kivlasztsra. Mihelyt a msodik cm is mege-
gyezst mutat, a sed program jrakezdi az els cmzssel val egyezs
keresst; gy tetszleges szm, a cmzsnek megfelel tartomny egyezst
mutat a cmzssel.
A `!' negl opertor azt eredmnyezi, hogy a parancs azokra a sorokra
vonatkozik, amelyeket a cmzs nem vlasztott ki.
A fggvnyek kvetkez listjban zrjelben megadjuk a fggvny ltal megengedett
cmzsek maximlis szmt.
A "szveg"-gel jellt argumentumok egy vagy tbb sorbl llhatnak, melyek
kzl az utols kivtelvel mind `\'-re kell vgzdjn. (A `\' jel elrejti a
sorvgjelet.)
A szvegbeli backslash (fordtott trtvonal) jeleket a program gy kezeli,
mint az `s' parancs helyettestsi stringjben levket, s ezek a backslash
jelek hasznlhatk a kezdeti szkzk s tabultorok (whitespace karakterek)
megvdsre. Alaprtelmezs szerint ugyanis ezeket a bevezet jeleket figyel-
men kvl hagyja a sed.
Az "rfile" s "wfile" jells argumentumok a parancssor legvgn kell
lljanak. A sed minden "wfile"-t ltrehoz a feldolgozs megkezdse eltt.
Legfeljebb 10 "wfile" argumentum lehet.
A kvetkezkben ismertetjk a sed ltal ismert fggvnyeket.
a "szveg" (1)
Csatols (append). A "szveg"-et a kimenetre rja a kvetkez bemeneti
sor olvassa eltt.
b "cmke" (2)
Elgazs (branch) a "cmkt" visel `:' parancsra. Amennyiben nincs
megadva cmke, elgazs a szkript vgre.
c "szveg" (2)
Csere (change). Trli az aktulis szvegpuffert. 0 vagy 1 cmzssel,
illetve egy ktcmzses tartomny vgn elhelyezi a "szveg"-et a
kimeneten. Elkezdi a kvetkez ciklust.
d (2)
Trli (delete) az aktulis szvegpuffert. Elkezdi a kvetkez ciklust.
D (2)
Trli az aktulis szvegpuffer els sort, azaz az els jsor-karakter
eltt ll karaktereket s ezt az jsor-jelet. Elkezdi a kvetkez cik-
lust.
g (2)
Helyettesti az aktulis szvegpuffer tartalmt a msodik puffer (`hold
space') tartalmval.
G (2)
Az aktulis szvegpuffer tartalmhoz hozzfzi a msodik puffer (`hold
space') tartalmt.
h (2)
Az aktulis szvegpuffer tartalmt a msodik pufferbe msolja.
H (2)
Az aktulis szvegpuffer tartalmt a msodik pufferhez fzi.
i "szveg" (1)
Beilleszt (insert). Kirja a "szveg"-et a szabvnyos kimenetre.
l (2)
Listz. Kikldi a mintaterletet a szabvnyos kimenetre. Az `s'
parancshoz hasonlan egy `w' opci kvetheti. A nem nyomtathat karak-
terek az albbiak szerint kerlnek kifejtsre:
\b -- backspace (ASCII 08)
\t -- tab (ASCII 09)
\n -- newline (ASCII 10)
\r -- return (ASCII 13)
\e -- escape (ASCII 27)
\xx -- a ktjegy xx hexadecimlis szmmal megadhat ASCII karak-
ter.
n (2)
Az aktulis szvegpuffer tartalmt a szabvnyos kimenetre msolja, s
beolvassa helyette a kvetkez bemeneti sort.
N (2)
A kvetkez bemeneti sort az aktulis szvegpuffer tartalmhoz fzi,
mikzben egy jsor-jelet illeszt kzjk. Az aktulis sor szma megvl-
tozik.
p (2)
Nyomtat (print). Az aktulis szvegpuffer tartalmt a szabvnyos
kimenetre msolja.
P (2)
Az aktulis szvegpuffer els sort, azaz az els jsor-karakter eltt ll
karaktereket a szabvnyos kimenetre msolja.
q (1)
Kilps (quit). Elgazs a szkript vgre. Nem kezd j ciklust.
r "rfile" (1)
Belovassa (read) az "rfile" tartalmt s a kimenetre rja, mg mieltt
a kvetkez bemeneti sort beolvasn.
s /szablyos kifejezs/helyettests/zszlk (2)
A szablyos kifejezs elfordulsait helyettesti az aktulis szveg-
pufferben. A `/' kivtelvel minden karakter hasznlhat. Teljesebb
lerst lsd az ed (1) kziknyv lapjn. A zszlk a kvetkezk lehetnek:
(Brmelyikk elfordulhat, de az is lehet, hogy egyikk sem.)
g -- Globlis. A string minden nem tfed megjelenst helyettesti. Ha
nincs megadva, csak az els megjelens helyettestdik.
p -- Kinyomtatja (print) a minta terletet ha helyettests trtnt.
w -- rs (write). Az aktulis szvegpuffert egy argumentumknt
megadott fjlhoz fzi hozz, ahogy a `w' parancsban, ha helyettests
trtnik. Ha nincs fjl argumentum, a szabvnyos kimenetre trtnik az
rs.
t "cmke" (2)
Feltteles elgazs. Elgazs a cmkvel jelzett `:' paracshoz, ha valam-
ilyen helyettests trtnt a bemeneti fjl legjabb olvassa vagy a
legutbbi `t' vagy `T' vgrehajtsa ta. Ha nincs megadva cmke, akkor
a szkript vgre trtnik elgazs.
T "cmke" (2)
Ellentte a `t' parancsnak. Elgazs a cmkvel jelzett `:' paracshoz,
ha semmilyen helyettests sem trtnt a bemeneti fjl legjabb olvassa
vagy a legutbbi `t' vagy `T' vgrehajtsa ta. Ha nincs megadva cmke,
akkor a szkript vgre trtnik elgazs.
w "wfile" (2)
rs (write). Az aktulis szvegpuffert a "wfile" fjl tartalmhoz fzi.
W "wfile" (2)
Az aktulis szvegpuffer els sort a "wfile" fjl tartalmhoz fzi.
x (2)
Felcserli (exchange) az aktulis szvegpuffer tartalmt a msodik
puffer (`hold space') tartalmval.
y /string1/string2/ (2)
Fordt. A string1-ben elfordul karaktereket a string2-ben azonos
pozciban elfordulval helyettesti. A stringek hossza egyenl kell
legyen.
! "parancs" (2)
Kivtel. Azokra a sorokra alkalmazza a fggvnyt (vagy csoportot, ha
a fggvny `}'), amelyek nem lettek kivlaszva a cmzs(ek)kel.
: "cmke" (0)
Ez a parancs semmit sem csinl, csak a `b' s `t' parancsok elgaz-
saihoz visel cmkt.
= (1)
Az aktulis sorszmot a szabvnyos kimenetre rja, mint egy kln sort.
{ (2)
Parancs csoprotosts. A kvetkez `}'-ig adott parancsokat vgrehajtja
a cmzs(ek) ltal meghatrozott sorokra.
Az res parancsot figyelmen kvl hagyja.
Ez az eszkz a BSD 4.1 UNIX sed-je alapjn fordtott tervezssel kszlt, s
(amennyire a szerz tudsa s a tesztek meg tudjk hatrozni) kompatbilis
azzal. A BSD 4.1 sed-jnek minden dokumentlt lehetsge adott.
Egy dokumentlatlan tulajdonsg (az els megjegyzst bevezet `n' azonos
hatst a `-n parancssor-opci'-val) nem kerlt implementlsra.
A BSD sed-hez kpest javtsok is trtntek, melyeket itt terjedelmi okokbl
nem trgyalunk.
Ez a program egy `freeware' komponense a GNU s MINIX opercis rendsz-
ereknek. A felhasznl itt megkapja a jogokat a program hasznlatra,
mdostsra s terjesztsre a kvetkez felttelek mellett:
1. A szerzsgre vonatkoz megjegyzst minden forrsfjlban vltozatlanul meg
kell hagyni.
2. A lefordtott vltozat forrskd nlkl nem terjeszthet.
ed(1), grep(1), awk(1), lex(1), regexp(5)
Ezt a kziknyv lapot Eric S. Raymond <esr [AT] snark.com> rta, habr a
sed csomag a GNU-tl szrmazik.
Horvth Andrs <horvatha [AT] rs1.hu>
November 19, 1995 sed(1)