next up previous index
Következő: 15.104.4 ÁTVIHETŐSÉG Fel: 15.104 sed(1) Előző: 15.104.2 VÁZLAT   Index

15.104.3 LEÍRÁS

A sed program a megnevezett fájlokat (alapértelmezés szerint a standard bemenetet) a standard kimenetre másolja, de közben egy parancsokat tartalmazó szkriptnek megfelelően megszerkeszti.

A `-e' opció az egyszerű szerkesztést jelenti: a szerkesztő parancsot a következő argumentumból veszi. Amennyiben több `-e' is van a parancssorban, megjelenésük sorrendjében hajtja őket végre. Amennyiben csak egyetlen `-e' opció van és nincs `-f', a `-e' elhagyható.

A `-f' opció azt eredményezi, hogy a parancsokat az ,,sfile'' fájlból veszi. Amennyiben több is van belőlük, megjelenésük sorrendjében kerülnek végrehajtásra. A `-e' és `-f'opciók keverhetők.

A `-g' opció azt eredményezi, mintha minden helyettesítési parancsnak `g' végződése lenne.

A `-n' opció elnyomja az alapértelmezett kimenetet.

A szkript soronként egy parancsot tartalmaz az alábbi forma szerint: [cím [, cím] ] függvény[argumentumok]

Általában a sed ciklikusan bemásol az aktuális szövegpufferbe egy sort a bemenetről, azután sorra alkalmazza azokat a parancsokat, amelyek a cím(ek) alapján a sorra vonatkoznak, végül a puffert a standard kimenetre másolja és törli.

A `-n' opció elnyomja a normális kimenetet, így csak a `p' és `w' parancsok kimenete készül el.

Néhány parancs (n, N) saját sorolvasást végez, és néhány másik (d, D) a szkript minden további utasítását átugorja. (A `D' parancs elnyomja a szövegpuffer törlését, amely normálisan bekövetkezne a következő ciklus előtt.) Azt is hasznos tudni, hogy létezik egy második puffer (`hold space'), amelyik másolható, hozzáfűzhető vagy felcserélhető az aktuális szövegpufferrel.

A címzés egy decimális számjegy, `$' jel, vagy tartalmi címzés lehet. A decimális jegy a legelső beolvasott sor esetén 1, és folyamatosan egyesével növekszik az összes bemeneti fájl sorain keresztül. A `$' jel az utolsó bemeneti sort jelenti.

A tartalmi címzés egy `/szabályos kifejezés/' az ed(1) stílusában, a következő különbségekkel:

1.
A `0 jelsorozat egy pufferbe ágyazott újsor­jellel egyezik meg, `' pedig egy tab-bal.
2.
Címek nélküli parancssor minden puffert kiválaszt.
3.
Egy címzéssel rendelkező parancssor minden olyan puffert kiválaszt, amely megfelel a címzésnek.
4.
Két címzéssel rendelkező parancssor egy tartományt választ ki, melybe beleértendők a megadott határok is. Atartományannál az első bemeneti puffernél kezdődik, amely megfelel az első címzésnek, és annál végződik, amely ezután először felel meg a másodiknak. Amennyiben a második címzés egy szám, amely kisebb vagy egyenlő, mint az elsőnek kiválasztott sor száma, csak egy sor kerül kiválasztásra. Mihelyt a második cím is megegyezést mutat, a sed program újrakezdi az első címzéssel való egyezés keresését; így tetszőleges számú, a címzésnek megfelelő tartomány egyezést mutat a címzéssel.

A `!' negáló operátor azt eredményezi, hogy a parancs azokra a sorokra vonatkozik, amelyeket a címzés nem választott ki.

A függvények következő listájában zárójelben megadjuk a függvény által megengedett címzések maximális számát.

A ,,szöveg''-gel jelölt argumentumok egy vagy több sorból állhatnak, melyek közül az utolsó kivételével mind `\'-re kell végződjön. (A `\' jel elrejti a sorvégjelet.) A szövegbeli backslash (fordított törtvonal) jeleket a program úgy kezeli, mint az `s' parancs helyettesítési stringjében levőket, és ezek a backslash jelek használhatók a kezdeti szóközök és tabulátorok (whitespace karakterek) megvédésére. Alapértelmezés szerint ugyanis ezeket a bevezető jeleket figyelmen kívül hagyja a sed.

Az ,,rfile'' és ,,wfile'' jelölésű argumentumok a parancssor legvégén kell álljanak. A sed minden ,,wfile''-t létrehoz a feldolgozás megkezdése előtt. Legfeljebb 10 "wfile" argumentum lehet.

A következőkben ismertetjük a sed által ismert függvényeket.

a"szöveg"(1)
Csatolás (append). A ,,szöveg''-et a kimenetre írja a következő bemeneti sor olvasása előtt.
b"címke" (2)
Elágazás (branch) a ,,címkét'' viselő `:' parancsra. Amennyiben nincs meg adva címke, elágazás a szkript végére.
c"szöveg"(2)
Csere (change). Törli az aktuális szövegpuffert. 0 vagy 1 címzéssel, illetve egy kétcímzéses tartomány végén elhelyezi a ,,szöveg''-et a kimeneten. Elkezdi a következő ciklust.
d(2)
Törli (delete) az aktuális szövegpuffert. Elkezdi a következő ciklust.
D(2)
Törli az aktuális szövegpuffer első sorát, azaz az első újsor-karakter előtt álló karaktereket és ezt az újsor-jelet. Elkezdi a következő ciklust.
g(2)
Helyettesíti az aktuális szövegpuffer tartalmát a második puffer (`hold space') tartalmával.
G(2)
Az aktuális szövegpuffer tartalmához hozzáfűzi a második puffer (`hold space') tartalmát.
h(2)
Az aktuális szövegpuffer tartalmát a második pufferbe másolja.
H(2)
Az aktuális szövegpuffer tartalmát a második pufferhez fűzi.
i"szöveg"(1)
Beilleszt (insert). Kiírja a ,,szöveg''-et a standard kimenetre.
l(2)
Listáz. Kiküldi a mintaterületet a standard kimenetre. Az `s' parancshoz hasonlóan egy `w' opció követheti. A nem nyomtatható karakterek az alábbiak szerint kerülnek kifejtésre:
\b
- backspace (ASCII 08)
\t
- tab (ASCII 09)
\n
- newline (ASCII 10)
\r
- return (ASCII 13)
\e
- escape (ASCII 27)
\xx
- a kétjegyű xx hexadecimális számmal megadható ASCII karakter.
n(2)
Az aktuális szövegpuffer tartalmát a standard kimenetre másolja, és beolvassa helyette a következő bemeneti sort.
N(2)
A következő bemeneti sort az aktuális szövegpuffer tartalmához fűzi, miközben egy újsor-jelet illeszt közéjük. Az aktuális sor száma megváltozik.
p(2)
Nyomtat (print). Az aktuális szövegpuffer tartalmát a standard kimenetre másolja.
P(2)
Az aktuális szövegpuffer első sorát, azaz az első újsor-karakter előtt álló karaktereket a standard kimenetre másolja.
q(1)
Kilépés (quit). Elágazás a szkript végére. Nem kezd új ciklust.
r"rfile" (1)
Belovassa (read) az ,,rfile'' tartalmát és a kimenetre írja, még mielőtt a következő bemeneti sort beolvasná.
s/szabályos kifejezés/helyettesítés/zászlók (2)
A szabályos kifejezés előfordulásait helyettesíti az aktuális szövegpufferben. A `/' kivételével minden karakter használható. Teljesebb leírást lásd az ed(1) kézikönyv lapján. A zászlók a következők lehetnek: (Bármelyikük előfordulhat, de az is lehet, hogy egyikük sem.)
g
Globális. A string minden nem átfedő megjelenését helyettesíti. Ha nincs megadva, csak az első megjelenés helyettesítődik.
p
Kinyomtatja (print) a minta területet ha helyettesítés történt.
w
Írás (write). Az aktuális szövegpuffert egy argumentumként megadott fájlhoz fűzi hozzá, ahogy a `w' parancsban, ha helyettesítés történik. Ha nincs fájl argumentum, a standard kimenetre történik az írás.
t"címke" (2)
Feltételes elágazás. Elágazás a címkével jelzett `:' paracshoz, ha valamilyen helyettesítés történt a bemeneti fájl legújabb olvasása vagy a legutóbbi `t' vagy `T' végrehajtása óta. Ha nincs megadva címke, akkor a szkript végére történik elágazás.
T"címke" (2)
Ellentéte a `t' parancsnak. Elágazás a címkével jelzett `:' paracshoz, ha semmilyen helyettesítés sem történt a bemeneti fájl legújabb olvasása vagy a legutóbbi `t' vagy `T' végrehajtása óta. Ha nincs megadva címke, akkor a szkript végére történik elágazás.
w"wfile" (2)
Írás (write). Az aktuális szövegpuffert a ,,wfile'' fájl tartalmához fűzi.
W"wfile" (2)
Az aktuális szövegpuffer első sorát a ,,wfile'' fájl tartalmához fűzi.
x(2)
Felcseréli (exchange) az aktuális szövegpuffer tartalmát a második puffer (`hold space') tartalmával.
y/string1/string2/ (2)
Fordít. A string1­ben előforduló karaktereket a string2­ben azonos pozícióban előfordulóval helyettesíti. A stringek hossza egyenlő kell legyen.
!"parancs" (2)
Kivétel. Azokra a sorokra alkalmazza a függvényt (vagy csoportot, ha a függvény`}'), amelyek nem lettek kiválaszva a címzés(ek)kel.
:"címke" (0)
Ez a parancs semmit sem csinál, csak a `b' és `t' parancsok elágazásaihoz visel címkét.
=(1)
Az aktuális sorszámot a standard kimenetre írja, mint egy külön sort.
{(2)
Parancs csoprotosítás. A következő `}'-ig adott parancsokat végrehajtja a címzés(ek) által meghatározott sorokra. Az üres parancsot figyelmen kívül hagyja.


next up previous index
Következő: 15.104.4 ÁTVIHETŐSÉG Fel: 15.104 sed(1) Előző: 15.104.2 VÁZLAT   Index

1999-09-17