A SED EDITOR

A sed editor az ed igen közeli rokona, igazság szerint annak egy szűkített parancskészletét ismeri. Ennek ellenére külön foglalkozunk vele, mert más célokra használható mint rokona, s feldolgozási elve is eltér az alapvetően interaktív ed editortól. (A név egyébként a stream editor kifejezésből ered, magyarra leginkább az áradatszerkesztő, vagy adatfolyamszerkesztő kifejezéssel lehetne fordítani.) Míg az ed és a vi a mindennapos fájlszerkesztési munka eszköze, a sed inkább nagyméretű fájlokban rutinszerűen végrehajtandó, komplex behelyettesítésekre alkalmas (képzeljük el például, hogy egy Unix rendszer teljes manuálsorozatában minden manuáloldalon ki kell cserélni a verziószámokat, valamint a megfelelő hivatkozásokat a szövegben; vagy éppen abba a szerencsés helyzetbe kerültünk, hogy kézzel kell megcsinálnunk egy HTML formátumú "webes" anyag átkonvertálását úgy, hogy a HTML formázó karakterek eltüntetésével tiszta szövegállományt akarunk előállítani; mindezek tipikusan olyan alkalmazások, melyek a sed után kiáltanak).

A sed hívási formája a következő:

sed [opciók ...] script [fájl ...]

A sed mindig a standard kimenetre dolgozik, azaz a bemenetként szolgáló fájlt (ha egyáltalán fájlt olvasott, s nem a standard bemenetet) soha nem módosítja.

A script tartalmazza a sed által végrehajtandó parancsokat. Mint már említettük, a sed parancskészlete nagyon hasonlít az ed editoréra, de azért az eltérő működéséből fakadólag vannak különbségek, ezekre rövidesen kitérünk.

A sed mindössze az alábbi három opciót ismeri:

-n a feldolgozott sorok automatikus kiírását letiltja, csak explicit sed parancs hatására írja ki a kimenetre a módosított sorokat

-f scriptfájl scriptfájl tartalmazza a sed által végrehajtandó parancsokat

-e script akkor használjuk, ha a sed parancssorában több végrehajtandó scriptet adunk meg. Egyetlen script esetén elhagyható.

Néhány példa: a

$ sed 's/Unix/UNIX/g' chapter1.txt >chapter1.txt:1

parancs hatására a chapter1.txt fájlban minden Unix szót UNIX-ra cserél, s az így módosított állományt elmenti chapter1.txt:1 néven (az eredeti változatlanul hagyásával). Az

ls -lt | sed '1d \

3q'

hatására az időrendbe állított ls lista első sorát törli a sed (az ugyanis nem fájl bejegyzéseket tartalmaz), majd a legfrissebb három fájl nevét kiírja a képernyőre. Célszerű mindig szimpla idézőjelek közé tenni a végrehajtandó scriptet, ha a parancssorból gépeljük be. Ha a scriptet fájlba írjuk, az idézőjelek természetesen elmaradhatnak:

$ ls -lt | sed -f frissfájlok

frissfájlok tartalma pedig ezek után a következő:

1d

3q

 

Tartalomjegyzék