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