.TH sed 1 "November 19, 1995" .SH NÉV sed \- folyamszerkesztő (stream editor) .SH ÁTTEKINTÉS sed [-n] [-g] [-e script ] [-f sfile ] [ file ] ... .SH LEÍRÁS A `sed' program a megnevezett fájlokat (alapértelmezés szerint a standard bemenetet) a szabványos kimenetre másolja, de közben egy parancsokat tartalmazó szkriptnek megfelelően megszerkeszti. .P 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ó. .P 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. .P A `-g' opció azt eredményezi, mintha minden helyettesítési parancsnak `g' végződése lenne. .P A `-n' opció elnyomja az alapértelmezett kimenetet. .P 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 szabványos kimenetre másolja és törli. .P A `-n' opció elnyomja a normális kimenetet, így csak a `p' és `w' parancsok kimenete készül el. .P 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.) .P 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. .P 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. .P A tartalmi címzés egy `/szabályos kifejezés/' az ed (1) stílusában, a következő különbségekkel: .P .TP 5 (1) A `\n' jelsorozat egy pufferbe ágyazott újsor-jellel egyezik meg, `\t' pedig egy tab-bal. .TP 5 (2) Címek nélküli parancssor minden puffert kiválaszt. .TP 5 (3) Egy címzéssel rendelkező parancssor minden olyan puffert kiválaszt, amely megfelel a címzésnek. .TP 5 (4) Két címzéssel rendelkező parancssor egy tartományt választ ki, melybe beleértendők a megadott határok is. A tartomány anná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. .P A `!' negáló operátor azt eredményezi, hogy a parancs azokra a sorokra vonatkozik, amelyeket a címzés nem választott ki. .P 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. .P 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.) .P 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. .P 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. .P A következőkben ismertetjük a sed által ismert függvényeket. .TP 5 a "szöveg" (1) Csatolás (append). A "szöveg"-et a kimenetre írja a következő bemeneti sor olvasása előtt. .TP 5 b "címke" (2) Elágazás (branch) a "címkét" viselő `:' parancsra. Amennyiben nincs megadva címke, elágazás a szkript végére. .TP 5 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. .TP 5 d (2) Törli (delete) az aktuális szövegpuffert. Elkezdi a következő ciklust. .TP 5 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. .TP 5 g (2) Helyettesíti az aktuális szövegpuffer tartalmát a második puffer (`hold space') tartalmával. .TP 5 G (2) Az aktuális szövegpuffer tartalmához hozzáfűzi a második puffer (`hold space') tartalmát. .TP 5 h (2) Az aktuális szövegpuffer tartalmát a második pufferbe másolja. .TP 5 H (2) Az aktuális szövegpuffer tartalmát a második pufferhez fűzi. .TP 5 i "szöveg" (1) Beilleszt (insert). Kiírja a "szöveg"-et a szabványos kimenetre. .TP 5 l (2) Listáz. Kiküldi a mintaterületet a szabványos 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. .TP 5 n (2) Az aktuális szövegpuffer tartalmát a szabványos kimenetre másolja, és beolvassa helyette a következő bemeneti sort. .TP 5 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. .TP 5 p (2) Nyomtat (print). Az aktuális szövegpuffer tartalmát a szabványos kimenetre másolja. .TP 5 P (2) Az aktuális szövegpuffer első sorát, azaz az első újsor-karakter előtt álló karaktereket a szabványos kimenetre másolja. .TP 5 q (1) Kilépés (quit). Elégazás a szkript végére. Nem kezd új ciklust. .TP 5 r "rfile" (1) Belovassa (read) az "rfile" tartalmát és a kimenetre írja, még mielőtt a következő bemeneti sort beolvasná. .TP 5 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 szabványos kimenetre történik az írás. .TP 5 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. .TP 5 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. .TP 5 w "wfile" (2) Írás (write). Az aktuális szövegpuffert a "wfile" fájl tartalmához fűzi. .TP 5 W "wfile" (2) Az aktuális szövegpuffer első sorát a "wfile" fájl tartalmához fűzi. .TP 5 x (2) Felcseréli (exchange) az aktuális szövegpuffer tartalmát a második puffer (`hold space') tartalmával. .TP 5 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. .TP 5 ! "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. .TP 5 : "címke" (0) Ez a parancs semmit sem csinál, csak a `b' és `t' parancsok elágazásaihoz visel címkét. .TP 5 = (1) Az aktuális sorszámot a szabványos kimenetre írja, mint egy külön sort. .TP 5 { (2) Parancs csoprotosítás. A következő `}'-ig adott parancsokat végrehajtja a címzés(ek) által meghatározott sorokra. .P Az üres parancsot figyelmen kívül hagyja. .P .SH ÁTVIHETŐSÉG Ez az eszköz a BSD 4.1 UNIX sed-je alapján fordított tervezéssel készült, és (amennyire a szerző tudása és a tesztek meg tudják határozni) kompatíbilis azzal. A BSD 4.1 sed-jének minden dokumentált lehetősége adott. .P Egy dokumentálatlan tulajdonság (az első megjegyzést bevezető `n' azonos hatását a `-n parancssor-opció'-val) nem került implementálásra. .P A BSD sed-hez képest javítások is történtek, melyeket itt terjedelmi okokból nem tárgyalunk. .SH MEGJEGYZÉS .P Ez a program egy `freeware' komponense a GNU és MINIX operációs rendszereknek. A felhasználó itt megkapja a jogokat a program használatára, módosítására és terjesztésére a következő feltételek mellett: .P 1. A szerzőségre vonatkozó megjegyzést minden forrásfájlban változatlanul meg kell hagyni. .P 2. A lefordított változat forráskód nélkül nem terjeszthető. .P .SH LÁSD MÉG .P ed(1), grep(1), awk(1), lex(1), regexp(5) .P .SH SZERZŐ Ezt a kézikönyv lapot Eric S. Raymond írta, habár a sed csomag a GNU-tól származik. .SH MAGYAR FORDÍTÁS Horváth András