sed(1)


NÉV

sed - folyamszerkesztô

HASZNÁLAT

sed [ -an ] parancs [fájl ...]
sed [ -an ] [ -e parancs ] [ -f parancsfájl ] [fájl ...]

LEÍRÁS

A sed segédprogram a megadott fájlokat dolgozza fel, vagy ha nincsenek fájlok megadva, akkor a standard bemenetrôl érkezô adatokat. A bemenetet tartalmát a parancslista szerint módosítja. A bemenetet a standard kimenetre írja.

Egy önálló parancsot elsô argumentumként adhatunk meg a sed-nek. Több parancsot az -e vagy az -f kapcsolók használatával adhatunk meg. Minden parancs a megadási sorrend szerint hajtódik végre a bemeneten, kezdetüktôl függetlenül.

A következô kapcsolók állnak rendelkezésre:

-a
A "w" funkciók számára argumentumokként megadott fájlok feldolgozás elôtt alapértelmezés szerint létrejönnek (vagy csonkulnak). Az -a kapcsoló hatására a sed minden fájl megnyitása elôtt addig vár, amíg az idevágó "w" funkciót tartalmazó parancs végre nem hajtódik a bemenet adott során.

-e parancs
A parancs argumentumban meghatározott szerkesztô parancsokat hozzáfûzi a parancsok listájához.

-f parancsfájl
A parancsfájl-ban található szerkesztô parancsokat hozzáfûzi a parancsok listájához. Minden egyes szerkesztô parancsnak kûlön sorban kell lennie.

-n
Alapértelmezés szerint a bemenet minden sora a kimenetre íródik, miután minden parancs végrehajtódott rajta. Az -n kapcsoló elnyomja ezt a viselkedést.

Egy sed parancs formája a következô:

[cím[,cím]]funkció[argumentumok]

A parancs elsô címrésze és a funkciórészek elé szóközöket lehet beszúrni.

A sed normális esetben ciklikusan bemásolja az input adott sorát egy "mintaterület"-re, a végén lévô újsor-karakter nélkûl, (kivéve, ha egy "D" funkció után maradt még valami), végrehajt minden parancsot, amelyek arra a mintaterületre vonatkoznak, a mintaterületet a standard kimenetre másolja, hozzáfûzve egy újsor-karaktert, majd törli a mintaterület.

Néhány funkció egy "raktárterület"-et használ, ahova a mintaterület egy részét vagy egészét késôbbi visszaállítás érdekében elmenti.

Sed címek

Egy címet nem kell feltétlenûl megadni, de ha meg van adva, akkor számnak kell lennie (ami a bemeneti fájlok egy-egy azonos sorszámú sorát jelzi), vagy egy dollár ( "$" ) karakternek, ami a bemenet utolsó sorát címzi meg; vagy egy szövegvonatkozású címnek (amely egy reguláris kifejezésbôl áll, határolójelek között).

A cím nélkûli parancssor minden mintaterületre érvényes.

Az egy címet tartalmazó parancssor azokat a mintaterületeket választja ki, amelyek egyeznek a címmel.

Az a parancssor, amelyik két címet tartalmaz, az elsô címmel egyezô mintaterülettôl a második címmel egyezô, elsô utáni mintaterületig terjedô zárt intervallumra érvényes. (Ha a második cím kisebb vagy egyenlô, mint az elôször kiválasztott sorszám, akkor csak az a sor lesz kiválasztva.) A kiválasztott tartományt követô elsô sortól kezdve a sed ismét az elsô címet kezdi keresni.

Olyan szerkesztô parancsok, amelyek a nem kiválasztott mintaterületekre hatnak, a felkiáltójel-funkció ( "!" ) segítségével adhatók meg.

Sed reguláris kifejezések

A sed reguláris kifejezések alapvetô reguláris kifejezések (ARK-k, lásd regex (3) további információkért). Ezenfelül a sed a következô két dologgal bôvült az ARK-hoz képest:

  1. A címzésben, bármely backslash ( "\" ) -tôl különbözô karakter vagy újsor karakter használható a reguláris kifejezés meghatározására. Továbbá egy backslash karaktert téve a körülhatároló karakter elé a karakter betû szerint való értelmezéséhez vezet. Például a \xabc\xdefx címzésben a körülhatároló karakter egy "x", és a második "x" saját magát képviseli, így a reguláris kifejezés: "abcxdef".

  2. A \n escape szekvencia megfelel egy újsor karakternek a mintaterületben. Viszont nem használhatunk újsor karaktert betû szerint egy címzésben vagy helyettesítô parancsban.

A sed reguláris kifejezések egy speciális tulajdonsága, hogy alapértelmezés szerint a legutoljára használt reguláris kifejezést használják. Amennyiben egy reguláris kifejezés üres, azaz csak a határoló karakterek adottak, a legutólsóként tapasztalt reguláris kifejezés használtatik. Az utolsó reguláris kifejezés: az utolsó olyan reguláris kifejezés, amelyet címzés vagy helyettesítô parancs részeként használtunk, de futási idô szerint utoljára, nem pedig lefordítási idôrendben. Például a "/abc/s//XXX/" parancs az "XXX"-et fogja helyettesíteni az "abc" mintába.

Sed funkciók

A következô parancslistában a parancsok maximális megengedhetô címszáma [0cím],[1cím],vagy [2cím]-mel lesz jelölve, aszerint, hogy nulla, egy vagy két címet engednek meg.

A szöveg argumentum egy vagy több sorból állhat. Amennyiben a szövegbe újsort akarunk ágyazni, elôzze meg egy backslash. A többi backslash törlôdik és az utánuk következô karakterek betû szerint értelmezôdnek.

Az "r" és "w" funkciók egy opcionális file paraméterrel bôvülnek, amelyet a funkció betûjétôl egy szóköznek kell elválasztania. A sed minden argumentumként adott file-t létrehoz (vagy a meglévô tartalmát csonkítja) mielôtt bármilyen adatfeldolgozás kezdetét venné.

A "b" , "r" , "s" , "t" , "w" , "y" , "!" , és a ":" funkciók elfogadnak újabb argumentumot. A következô vázlatok megmutatják, melyik argumentumokat kell a funkciók betüjétôl szóközzel elválasztani.

Két funkció tesz ki egy függvény listát. Ez pedig egy newline-okkal elválasztott sed funkciólista:

{ funkció funkció ... funkció }

A "{" -et megelôzheti, illetve követheti szóköz. A funkciót megelôzheti szóköz. A lezáró "}" -et újsornak vagy opcionálisan egy szóköznek kell megelôznie.

[2cím] function-list
Csak akkor hajt végre funkció listát, ha a mintaterület ki van választva.

[1cím]a\
szöveg
A szöveg -et a standard kimenetre írja, közvetlenül minden egyes, a bemenetrôl történô 1 sornyi olvasás elôtt, akár az "N" funkció végrehajtásakor, vagy egy új ciklus kezdetén.

[2cím]b[címzés]
Elkezdi a ":" funkciót a megadott címzéssel. Ha a címzés nem adott, a script végére áll.

[2cím]c\
szöveg
Törli a mintaterületet. 0 vagy 1 cím esetén, illetve egy 2 címes utasítás végén a szöveg-et a standard kimenetre írja.

[2cím]d
Törli a mintaterületet és kezdi a következô ciklust.

[2cím]D
Törli a mintaterület kezdô, elsô újsorig tartó szeletét, és elkezdi a következô ciklust.

[2cím]g
Kicseréli a mintaterület tartalmát a tárolóterület tartalmával.

[2cím]G
A mintaterülethez hozzáfûz egy újsort, majd a raktárterület tartalmát.

[2cím]h
Kicseréli a raktárterület tartalmát a mintaterület tartalmával.

[2cím]H
A raktárterülethez hozzáfûz egy újsort, majd a mintaterület tartalmát.

[1cím]i\
szöveg
Kiírja a szöveg-et a standard kimenetre.

[2cím]l
(Az "ell" betû.) Kiírja a mintaterületet a standard kimenetre egy egyértelmû ábrázolási formában. Ez a forma a következôképpen néz ki:

          backslash        \
          sürgôs           \a
          lapdobás         \f
          újsor            \n
          kocsivissza      \r
          tab              \t
          függôleges tab   \v

A megjeleníthetetlen karaktereket három számjegyen, oktális számként ábrázolja (egy backslash-sel a szám minden byte-ja elôtt; a legfontosabb byte áll elöl). A hosszú sorokat betördeli, a töréspontot egy backslash után álló újsorral jelöli. Minden egyes sor végére "$" kerül.

[2cím]n
Kiírja a mintaterület tartalmát a standard kimenetre - ha az alapértelmezés szerinti kimenetet nem lett felülbírálva -, és kicseréli a munkaterületet a bemenet következô sorával.

[2cím]N
A bemenet következô sorát hozzáfûzi a mintaterülethez. Ez utóbbi eredeti tartalmát egy újsor karakterrel választja el a hozzáfûzött anyagtól. Érdemes megjegyezni, hogy az aktuális sorszám megváltozik.

[2cím]p
Kiírja a mintaterületet a standard kimenetre.

[2cím]P
Az elsô újsor karakterrel bezárólag kiírja a mintaterületet a standard kimenetre.

[1cím]q
Elugrik a script végére és új ciklus indítása nélkül befejezi tevékenységét.

[1cím]r file
Azonnal bemásolja a file tartalmát a standard kimenetre, még mielôtt megkísérelné beolvasni a következô sort az input-ról. Ha a file valamiért nem olvasható, akkor egyszerûen figyelmen kívül hagyja, és nem ad hibajelzést (a visszatérési kódban sem).

[2cím]s/reguláris kifejezés/csereszöveg/jelzôk
A reguláris kifejezés elsô mintaterületbeli elôfordulását helyettesíti a csereszöveggel. Minden backslash-tôl és újsortól eltérô karakter használható a perjel helyett a regkif. és a csereszöveg elválasztására. Maga az elválasztó karakter használható önmaga jelölésére a regkif.-en és a csereszövegen belül, ha elôtte egy backslash áll.

A csereszövegben szerepelô minden egyes "et" karakter ( "&" ) helyére az a kifejezés kerül, amire a reguláris kifejezés éppen ráillik. Az "&" különleges jelentése elnyomható, ha egy backslash kerül elé. A "\#" string helyére, ahol "#" egy számjegy, az a szöveg kerül, amelyre a megfelelô visszahivatkozó kifejezés ráillik. (lásd re_format (7)).

Egy sort ketté lehet vágni azáltal, hogy egy újsor karaktert helyettesítünk bele. Egy újsor csereszövegbeli megadásához írjunk elé egy backslash-t.

A jelzôk értéke a helyettesítési funkcióban vagy üres, vagy a következôk közül valahány:

0 ... 9
A cserét a reguláris kifejezésnek csak a mintaterületen belüli N-edik elõfordulására hajtja végre.

g
A cserét a reguláris kifejezés összes nem átfedõ illeszkedésére hajtja végre, nem csak az elsõ elõfordulására.

p
A mintaterületet - ha történt csere - kiírja a standard kimenetre. Egy csere akkor is cserének minõsül, ha az eredménye megegyezik a kiindulási karakterlánccal.

w fájl
A mintaterületet - ha történt csere - a fájl-hoz csatolja. Egy csere akkor is cserének minõsül, ha az eredménye megegyezik a kiindulási karakterlánccal.

[2cím]t [címke]
Ha történt helyettesítés az utolsó sor beolvasása, vagy az utolsó "t" utasítás végrehajtása óta, akkor a címke által meghatározott utasításra ugrik. Ha nincs címke megadva, a script végére ugrik.

[2cím]w fájl
A mintaterületet a fájl végéhez fûzi.

[2cím]x
Kicseréli a minta tartalmát, és megõrzi a szóközöket.

[2cím]y/string1/string2/
Kicseréli mintaterületen belül az összes string1 beli karaktert a megfelelõ string2 beli karakterre. A "/" jel helyett bármilyen más karakter használható a string-ek elválasztására, kivéve a "\" jelet és az újsor karaktert. String1-ben és string2-ben egy "\" jel és egy õt követõ bármilyen újsortól különbözõ k karakter jelentése egy újsor karakter, ha k egy "n" betû, egyébként pedig maga a k karakter.

[2cím]!funkció

[2cím]!funkció-lista
A funkciót vagy a funkció-listát csak azokra a sorokra alkalmazza, amelyeket a címek nem jelölnek ki.

[0cím]:címke
Ez a funkció nem csinál semmit, csak definiál egy cimkét, amire a "b" illetve "t" parancsok ugorhatnak.

[1cím]=
Kiírja a sor számát és egy újsor karaktert a standard kimenetre.

[0cím]
Az üres sorokat a sed nem veszi figyelembe.

[0cím]#
A sed a "#" jelet és a sor hátra lévõ részét nem veszi figyelembe (megjegyzésként kezeli), azzal az egy kivétellel, hogy ha a fájl elsõ két karaktere "#n", akkor ez letiltja a kimenetet. Ugyanez a hatás elérhetõ a -n kapcsoló megadásával a parancssorban.

A sed parancs visszatérési értéke 0, ha a mûvelet sikeres volt, illetve >0, ha hiba történt.

LÁSD MÉG

awk (1) , ed (1) , grep (1) , regex (3) , re_format (7)

TÖRTÉNET

A sed parancs az AT&T UNIX 7-es verziójában jelent meg.

SZABVÁNYOK

A sed parancs az IEEE Std. (POSIX) 1003.2 szabvány részét képezi.