Manpages

NÉV

sed − folyamszerkesztő (stream editor)

ÁTTEKINTÉS

sed [-n] [-g] [-e script ] [-f sfile ] [ file ] ...

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.

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 szabványos 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. 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.

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 megadva 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 szabványos kimenetre.

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.

n (2)

Az aktuális szövegpuffer tartalmát a szabványos 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 szabványos kimenetre másolja.

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.

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 szabványos 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 szabványos 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.

Á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.

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.

A BSD sed-hez képest javítások is történtek, melyeket itt terjedelmi okokból nem tárgyalunk.

MEGJEGYZÉS

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:

1. A szerzőségre vonatkozó megjegyzést minden forrásfájlban változatlanul meg kell hagyni.

2. A lefordított változat forráskód nélkül nem terjeszthető.

LÁSD MÉG

ed(1), grep(1), awk(1), lex(1), regexp(5)

SZERZŐ

Ezt a kézikönyv lapot Eric S. Raymond <esr [AT] snark.com> írta, habár a sed csomag a GNU-tól származik.

MAGYAR FORDÍTÁS

Horváth András <horvatha [AT] rs1.hu>