Az ed parancsainak alakja

Nagy általánosságban az ed parancsokat az alábbi alakban lehet leírni:

címkijelölés parancs argumentum

A parancs általában egy betű, vagy egy betű és egy írásjel (ez a betű általában, mint a UNIX-ban már annyiszor megszoktuk, a parancs angol elnevezésének rövidítése).

A parancsok egy lehetséges csoportosítási módja az, hogy átvisz-e beírás üzemmódba vagy sem. A beírás üzemmódba átvivő parancsok argumentuma a beírandó szöveg, ezt a parancsok ismertetésénél text néven jelöljük. A többi parancs argumentumait esetileg tárgyaljuk.

A címkijelölés meghatározása a legszínesebb a három fogalom között. A címkijelölés mindig egy vagy több sort határoz meg, amelyre vagy amelyekre a parancs végrehajtása vonatkozik. Egy sorra hivatkozhatunk sorszámmal, egy sorokban megadott szövegtartományra két vesszővel elválasztott sorszámmal. Ha egyáltalán nem adunk meg sorszámot, akkor a parancs a mindenkori aktuális soron hajtódik végre. Így a

3,13p

parancs hatására az ed a buffer tartalmát a harmadik sortól a tizenharmadik sorig kinyomtatja a képernyőre. A

12d

parancssor hatására a buffer tizenkettedik sora törlődik, míg a

d

parancs hatására az aktuális sor. (Az új aktuális sor ilyen esetekben általában az utolsó törölt sor utáni lesz.)

A buffer első sora mindig az 1-es sorszámot viseli. A sorszám meghatározásában a következő jelöléseket alkalmazhatjuk: a . (pont) karakter az aktuális sort jelöli, ahol a mutató áll. Tehát a

.,25d

parancs azt jelenti, hogy az aktuális sortól a huszonötödik sorig bezárólag törölni kell. A

.=

hatására az ed kiírja az épp aktuális sor sorszámát. A '$' jel jelöli a buffer utolsó sorát. Így a

.,$d

parancs hatására az aktuálistól az utolsó sorig terjedő szövegrész törlődik a bufferból.

 

Alkalmazhatunk relatív címzést is, a '+', '-' jelek segítségével. Például a

.+2,$-3d

parancs az aktuálist követő második sortól az utolsó sor előtti harmadik sorig töröl a bufferban. Azokat a sorokat, amelyeken parancsot akarunk végrehajtani, nem csak direkt címzéssel, hanem szövegminta alapján is kijelölhetjük. A szövegmintának szintaktikusan eleget kell tenni a reguláris kifejezések szabályainak. Formális követelmény, hogy a mintát '/' jelek közé kell zárni. Tehát a

/begin/a

szoveg

.

kérés az olvasás irányban soronkövetkező első olyan sort keresi meg, amelyben a begin karaktersorozat előfordul, és azt követően szúrja be a "szoveg" sort a buffer tartalmába, majd a sor elején álló pont karakter hatására újra parancsmódba kerül.

A minta szerinti keresés, vagy sorkiválasztás teljesen azonos értékű a sorszám szerinti sorkijelöléssel. Így a

/begin/,/end/d

parancs a legközelebbi begin szócskát tartalmazó sortól a legközelebbi end szót tartalmazó sorig törli a szöveget. Figyelem, ebben az esetben a két mintát egyszerre kezdi keresni, és így ha azok azonos sorban fordulnak elő, akkor csak azt az egy sort találja meg. Amennyiben azt kívánjuk, hogy az end mintát csak az után a sor után kezdje keresni, amelyikben a begin mintát megtalálta, akkor a két mintát pontosvesszővel választjuk el:

/begin/;/end/w file

Tehát a fenti parancs hatására, a kurrens pozícióhoz legközelebb eső begin end páros közti szövegdarab a file nevű állományba íródik.

Használhatjuk a mintával megkeresett sort relativ címzésre is:

/begin/-1 s/alma/korte/

Így a fenti parancs a legközelebbi begin előtti sorban az alma mintát korte mintára cseréli.

Ha a minta keresése közben a buffer végére ért, az editor a szöveg elején folytatja a keresést. A keresés irányát megfordíthatjuk, ha a '/' jel helyet '?' jelekből álló párosba tesszük a mintát. Ha a mintát nem találja, illetve más problémája támad a keresés közben, egy kérdőjel kiírásával válaszol az editor.

Ha a munka befejezésével a buffert el kívánjuk menteni, a

w

vagy a

w file

paranccsal tehetjük meg, végül a q vagy a Q paranccsal lezárhatjuk az editor működését.

 

Tartalomjegyzék