A sed folyamszerkesztő



Hasonló dokumentumok
A sed folyamszerkesztő

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

BASH SCRIPT SHELL JEGYZETEK

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

Az állományok kezelésére használt fontosabb parancsok

8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába

8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába

Szkriptnyelvek. 1. UNIX shell

Operációs rendszerek. 10. gyakorlat. AWK - bevezetés UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

7. Laboratóriumi gyakorlat, 1. rész : Vezérlési szerkezetek II.

Operációs rendszerek 1.

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

További vezérlő valamint számításokat megkönnyítő szerkezetek

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Szövegszerkesztők. Több kisebb szövegszerkesztőt lehet bármely UNIX vagy Linux disztribúció alatt futtatni. Ezek közül az ismertebbek az alábbiak:

AWK programozás, minták, vezérlési szerkezetek

További vezérlő valamint számításokat megkönnyítő szerkezetek

Reguláris vagy szabályos kifejezések

AWK programozás, minták, vezérlési szerkezetek

BASH script programozás II. Vezérlési szerkezetek

S z á m í t ó g é p e s a l a p i s m e r e t e k

Operációs rendszerek gyak.

1. Alapok. #!/bin/bash

Operációs rendszerek 2 3. alkalom - Reguláris kifejezések, grep, sed. Windisch Gergely windisch.gergely@nik.uni-obuda.hu


Rekurzió. Dr. Iványi Péter

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

2. Készítsen awk szkriptet, amely kiírja az aktuális könyvtár összes alkönyvtárának nevét, amely februári keltezésű (bármely év).

6. BASH programozás I.

Operációs Rendszerek II. labor. 2. alkalom

Operációs rendszerek. 9. gyakorlat. BASH recap, reguláris kifejezések UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Reguláris vagy szabályos kifejezések

A legfontosabb DOS parancsok

AWK programozás Bevezetés

ELTE SAP Excellence Center Oktatóanyag 1

Számítógép Architektúrák. 4. Gyakorlat

4. Laborgyakorlat. A fájlokról ezeket az adatokat, a fájlrendszer tárolja. Számunkra az 1, 3, 4. oszlopok lesznek az érdekesek.

Flex tutorial. Dévai Gergely

Szövegek C++ -ban, a string osztály

Programozás Minta programterv a 1. házi feladathoz 1.

Listák, szótárak, fájlok Listák, szótárak, fájlok

length (s): Az s karaklerlánc hossza, substr(s,m,n): Az s mezőben levő karakterláncnak az m-edik karakterétől kezdődő, n darab karaktert vágja ki.

Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa:

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

A shell vezérlő szerkezetei I.

Operációs rendszerek I. - UNIX felhasználói ismeretek és héjprogramozás. Az awk

Operációs Rendszerek Gyakorlat

Java és web programozás

Operációs rendszerek. 4. gyakorlat. BASH bevezetés, script írása, futtatása UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

A héj vezérlő szerkezetei I.

GNU/Linux segédprogramok használata 1.0

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

Operációs rendszerek. 3. gyakorlat. Jogosultságkezelés, linkelés, csővezeték UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Operációs rendszerek. 2. gyakorlat. Munka állományokkal UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Munka állományokkal. mv: áthelyezés (átnevezés) rm: törlés. rmdir: üres könyvtár törlése. -r, -R: rekurzív (könyvtár) -r, -R: rekurzív (könyvtár)

Reguláris vagy szabályos kifejezések használata

Rendszerprogramozás Linux környezetben

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

8. Mezőutasítások. Schulcz Róbert 8. Mezőutasítások. v

PHP-MySQL. Adatbázisok gyakorlat

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés

Forráskód formázási szabályok

Feladat. Bemenő adatok. Bemenő adatfájlok elvárt formája. Berezvai Dániel 1. beadandó/4. feladat április 13. Például (bemenet/pelda.

Az SQL*Plus használata

chmod umask chown, chgrp

Alapfogalmak a héj (shell) használatához

4. Javítás és jegyzetek

Szűrők, reguláris kifejezések AWK programozás: minták, vezérlési szerkezetek, tömbök, beépített függvények, reguláris kifejezések

H N S A d a t K a p c s o l a t

Delphi programozás I.

Operációs Rendszerek példatár. Utolsó frissítés: február 10.

Felvételi tematika INFORMATIKA

BEKÉRT ADAT KÉPERNYŐRE ÍRÁSA KÖRNYEZETI VÁLTOZÓK FÁJL REDEZETT KIÍRÁSA KÖNYVTÁRBAN BEJEGYZÉSEK SZÁMA FÁJLBAN SZÁM NÖVELÉSE. #!

Linux alapok. Parancsok általános alakja parancs kapcsolók paraméterek

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

C programozás. 1 óra Bevezetés

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Szűrők Reguláris kifejezések, AWK

Operációs rendszerek gyakorlat

I. Felzárkoztató Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

Programozási nyelvek Java

A C programozási nyelv I. Bevezetés

3. modul - Szövegszerkesztés

HASZNÁLATI ÚTMUTATÓ DOLGOZÓK IMPORTÁLÁSA KULCS BÉR PROGRAMBA AZ ONLINE MUNKAIDŐ NYILVÁNTARTÓ RENDSZERBŐL. Budapest, november 08.

Hálózati adminisztráció Linux (Ubuntu 8.04) 7. gyakorlat

Az alábbi kód egy JSON objektumot definiál, amiből az adtokat JavaScript segítségével a weboldal tartalmába ágyazzuk.

UNIX/héjprogramozás - awk. Az awk

van neve lehetnek bemeneti paraméterei (argumentumai) lehet visszatérési értéke a függvényt úgy használjuk, hogy meghívjuk

Operációs rendszerek gyak.

Reguláris kifejezések 1.

Java és web programozás

ELSŐ LÉPÉSEK A SZÁMÍTÓGÉPEK RODALMÁBA AMIT A SZÁMÍTÓGÉPEKRŐL TUDNI ÉRDEMES

Címkék és ágak kezelése i. Címkék és ágak kezelése

Sztringkezelő függvények. A string típusú változók kezelése, használata és szerepük a feldolgozás során

INFORMATIKA javítókulcs 2016

Segédanyagok. Formális nyelvek a gyakorlatban. Szintaktikai helyesség. Fordítóprogramok. Formális nyelvek, 1. gyakorlat

Átírás:

A sed folyamszerkesztő 1. Bevezető...1 2. A sed parancssora...1 3. A sed működése...2 4. A sed parancsai...3 A címek megadása...3 Gyakran használt parancsok...4 Ritkábban használt parancsok...7 A hold pufferre vonatkozó parancsok...8 1. Bevezető A sed egy speciális szövegszerkesztő, un. folyamszerkesztő program (stream editor). Ez azt jelenti, hogy nem interaktív módban szerkesztünk vele szöveget, hanem a bemenetére vezetjük, a program végigolvassa azt szövegsoronként és közben szerkesztési műveleteket végez rajta. Az ilyen folyamot szerkesztő programok rendelkeznek egy parancsnyelvvel, amellyel meg lehet adni nekik a szerkesztési műveletek egymásutániságát. A nyelv segítségével a feldolgozás vezérlésére kis szkripteket írhatunk. A szerkesztett szöveg állományokba vagy egy kimeneti folyamba kerül további feldolgozásra. Így szöveges állományok szerkesztésére vagy szűrőként valamilyen szövegfeldolgozás köztes állomásaként használjuk. 2. A sed parancssora A sed meghívásának általános alakja: sed [opciók] 'szkript' [bemeneti_állományok] A sed a vezérlő szkriptet a -e vagy -f kapcsolókkal argumentumaként kaphatja meg, illetve egy karaktersor argumentumként kapcsolók nélkül. A 'szkript' paraméternek akkor kell szerepelnie, ha sem a -e sem a -f kapcsolókkal nem adunk meg más szkriptet. A feldolgozott szöveg vagy a standard bemenetre jön, vagy állománynév argumentumként: itt akár több állomány is szerepelhet, a sed sorban fogja feldolgozni őket. Az alábbi hívások tehát mind helyesek: a. az elso.txt nevű állomány kerül a bemenetre, a sed szkript a -e kapcsoló után jön: sed -e 'p' elso.txt b. ugyanaz, ha nincs -e kapcsoló, a sed az első paraméterként megadott sztringet tekinti szkriptnek: sed 'p' elso.txt c. a sed a standard bemenetet olvassa, és a végrehajtó szkriptet az egyik előbb említett módon adjuk meg: cat elso.txt sed 'p' d. A sed szkript egy állományban van: 1

cat elso.txt sed -f szerkeszt.sed Operációs rendszerek I. - UNIX felhasználói ismeretek és héjprogramozás Fontosabb kapcsolók: -e szkript ezt a szkriptet is hozzáfűzi a végrehajtandókhoz -f szkript_file a szkriptet állományból veszi -n nem ír a kimenetre a mintatér feldolgozása után -r bővített reguláris kifejezéseket használ -i in place magát az állományt szerkeszti -s separate: ha több állományt adunk meg, alapértelmezésként az állományokat egymás után, egy folyamnak tekinti: -s esetében viszont külön kezeli őket. A -i vel a -s -t is kell használni. -g minden helyettesítési parancsnál alkalmazza a g (global) opciót Ha külön állományba írjuk a sed programot, az első sorban a sed-et kell bejelölni mint végrehajtó program, tehát a forrásnak így kell kinézni: #!/bin/sed -f #itt soronként jönnek sed parancsok: 1,2 p 3, d 3. A sed működése A sed működés közben követi a vezérlő szkriptben található parancsokat. Egy sed szkript egy vagy több egymás utáni parancsból áll. A sed szkriptben található parancsok formátuma: [cím] parancs [opciók] így ezek egy címet, egy utasítást és az utasításhoz tartozó opciókat tartalmaznak, ilyenszerű feladatokat fogalmaznak meg: "cím : ha az első sor jön a folyamból, parancs: töröld", "cím : a második és harmadik sor közötti részben, parancs: helyettesítsd az a karaktert b -re". A sed soronként dolgozza fel a bemeneti szöveget. Két pufferel dolgozik, az egyiket mintatérnek nevezi (pattern space), a másikat egy másodlagos tároló puffernek (hold space). A következő algoritmust ismétli: -Beolvas egy szövegsort levágja a végéről az újsor karaktert és a sort a mintatérbe teszi. -Ezután lefuttatja a szkriptben levő parancsokat a mintatéren: minden egyes parancsot ellenőriz (egymás után), és csak azokat hajtja végre, amelyeknek a címe illeszkedik a mintatérben levő sor címére (azért használhatjuk itt az illeszkedés fogalmat, mert a címeket legtöbbször nem sorszámokkal adjuk meg, mint pl. első és második sor, hanem pl. így: azok a sorok amelyek számjeggyel kezdődnek. Ezt pedig a legkönnyebben reguláris kifejezésekkel lehet kifejezni). -Ha ezzel megvan, és nem adtunk meg -n kapcsolót, a mintatér tartalmát kiírja a kimenetre, a sor után kiírja a levágott újsor karaktert. -Ha nem használunk valamilyen speciális parancsot, ezek után törli a mintateret -Veszi a következő sort és végrehajtja ugyanazt 2

A sed végrehajtási mechanizmusa A hold tér arra szolgál, hogy a mintatér törlése előtt speciális parancsokkal sorokat mozgassunk át oda bonyolultabb feldolgozások végett. Így tehát pufferelt feldolgozást is végezhetünk: ezzel egyelőre nem foglalkozunk. 4. A sed parancsai A címek megadása A cím meghatározhat egy sor címet, egy tartományt, de kifejezhet valamilyen szövegben található mintát is. A feldolgozás során ezzel válasszuk ki "mintateret", azokat a sorokat amelyeket feldolgozunk. Így a címeket az alábbiak szerint lehet megadni: n Egy szám, amely a feldolgozott szöveg bizonyos sorát címzi, pl.: 22 a 22.-dik sort címzi. A sorokat 1-től számozzuk. A bemenet utolsó sorát címzi n~m /regex/ Az n.-dik sortól m lépésként címzi a sorokat, pl: 1,3 minden harmadik sort címez Azokat a sorokat címzi, amelyekben a regex reguláris kifejezésre illeszthető karakterláncot talál. Normál futásnál a sed alapszintű reguláris kifejezéseket használ, a -r kapcsolóval pedig bővítetteket. Mi többnyire így fogjuk használni. A kifejezést két / jellel határoljuk, pl.: /^a/ cím azokra a sorokra vonatkozok amelyek kis a karakterrel kezdődnek, /[0-9]/ pedig azokra amelyekben van számjegy. 3

/regexp/i vagy %regexp%i cím1,cím2 Határolójelként a / helyett lehet a % jelet is használni, ez akkor hasznos ha a reguláris kifejezésben van /. Az I módosító kis-nagybetű nélküli illesztést tesz lehetővé. A két cím közti tartományt címzi: 10,15 a 10. és 15.-dik sor közti tartományt 10,/^a/ a 10. és az utána következő első olyan sor közti részt amely a-val kezdődik Amennyiben a második cím kisebb mint az első, akkor csak egy sor a mintatér. Ha nincs a parancs előtt cím, akkor azt minden soron végig kell hajtani. A címek mindig teljes sorra vonatkoznak, és amennyiben címhatárokra vonatkoznak, a határok is beleesnek a címzett tartományba, tehát a 6,8 cím 3 sort jelent. Ha reguláris kifejezésekkel megadott tartományokkal dolgozunk, azok megpróbálnak akár több címteret is kiválasztani. Pl. az /^a/, /^b/ tartomány az első a betűvel kezdődő sortól a következő b betűvel kezdődő sorig válassza ki a címteret, végrehajtja a neki megfelelő parancsot és keresi a következőt. Ha a sed nem kapja meg a tartományt záró sort (pl. az előbbi példában nincs b-vel kezdődő sor), akkor a bemenet végéig mindent kiválaszt attól a sortól kezdve, amelyik a-val kezdődik. Mindez azért van így, mert a sed működése közben nincs "előretekintés", egyszer járja végig a szöveget (a végrehajtási sebesség miatt). Fontos: ebben a dokumentumban minden reguláris kifejezést bővített extended kifejezéssel adunk meg, tehát csak akkor működnek jól a sed-el való feldolgozásban, ha a sed-et -r kapcsolóval indítjuk. Gyakran használt parancsok A sed parancsai egymás után következnek külön szövegsorokban, amennyiben a sed szkript állományban van, vagy ; jellel elválasztva, ha a szkript egy karakterláncban van a parancssoron. Lássuk tehát a sed leghasználtabb parancsait: egy felsorolásban adjuk meg őket, minden parancs leírása után példákon keresztül. A parancsok előtti! jel esetében a parancsok a megadott cím komplementer tartományára vonatkoznak. # magyarázat (nincs előtte cím) p Nyomtatás (print) Kinyomtatja a kimenetre mintatér tartalmát. A sed normál módban minden feldolgozási ciklus után automatikusan nyomtat. Ha -n kapcsolóval indítjuk, akkor nem nyomtat, és ilyenkor azokat a sorokat amelyeket mégis 4

d q s/regexp/csere/k nyomtatni akarunk ezzel a paranccsal küldjük a kimenetre. Pl. az alábbi parancs csak a harmadik sort fogja nyomtatni: sed -n '3p' teszt.txt az alábbi pedig mindent sort, de a harmadikat kétszer: sed '3p' teszt.txt Törlés (delete) Törli a mintatérbe került sorokat, és azonnal új ciklusba kezd. Pl.: 3d #törli a harmadik sort 3!d #töröl minden sort, kivéve a harmadikat Kilépés (quit) Kilép a sed, ha eléri azt a sort, amelyre ez a parancs vonatkozik. Ilyenkor a feldolgozás véget ér. Helyettesítés, csere (substitute): a legfontosabb parancsa a szerkesztőnek. A címzett sorban a regexp -re illeszkedő karakterláncot a csere láncra cseréli. Például: s/ab/xy/ /s/^a/b/ a sorban található első ab szekvenciát xy-ra cseréli az utolsó sor elején levő kis a karaktert b-re cseréli A parancs külön metakarakterekkel rendelkezik, amelyeket a csere sztringben használhatunk, illetve a második / jel után módosító kapcsolókat adhatunk meg. A csere sztringben az alábbi metakaraktereket lehet használni: \n a reguláris kifejezés n.-dik () -el kiválasztott részláncát helyettesíti. Pl: \1 \2 & a teljes regexp által illesztett láncot helyettesíti (az & karakter beírására csere karakterláncba \& -et kell használni) A k kapcsoló helyén az alábbiak használhatók: g a regexp minden előfordulását helyettesíti a feldolgozott sorban n egy szám: csak az n.-dik előfordulást helyettesíti I kis-nagybetű nem számít a regexp illesztésénél w állomány a csere után az illető sort az állomány végére írja. Induláskor a sed nullára állítja az állomány hosszát. Ez arra jó, ha csak bizonyos szerkesztett sosrokat akarunk egy állományba kiírni. Példák: 5

s/(ab).*/\1/ attól a ponttól kezdve, ahogy ab-t talál a sorban, az egész sort ab-re cseréli s/ab/xy/2 a sorban található második ab-t cseréli xy-ra cím {parancs1; parancs2; parancs3} Kapcsos zárójelet használunk a sed parancsok csoportosítására: egy címtartományhoz több parancsot tudunk így rendelni, amelyek egymás után kerülnek meghívásra. Az alábbi sed szkript veszi a mas -al kezdődő sort, elvégez benne egy helyettesítést és kinyomtatja: sed -n '/^mas/{ s/a/b/; p }' További példák: 1. Töröljük egy szövegből az üres sorokat: cat test.txt sed -r '/^/d' 2. Cseréljük ki a szövegben mindenhol a get szót put -ra: cat test.txt sed -r 's/get/put/' 3. Cseréljük ki a California Hotel szópárokat Hotel California -ára : echo 'Hotel California' sed -r 's/(hotel) (California)/\2 \1/' California Hotel 4. Vagy általánosabban, minden sorban cseréljük fel az első két szót: echo 'elso masodik harmadik' sed -r 's/^(\w+) (\w+)/\2 \1/' masodik elso harmadik 5. Minden C állományban cseréljük ki az elso_fuggveny azonosítót masodik_fuggveny -re: sed -is -e 's/elso_fuggveny/masodik_fuggveny/g' *.c 6. Nyomtassuk ki az első olyan sort amelyik kis a betűvel kezdődik, és utána lépjünk ki: cat test.txt sed -rn '/^a/{p;q}' 7. Helyettesítsünk minden tabulátor karaktert 4 szóközzel: echo -e '\t\t\t' cat -A ^I^I^I echo -e '\t\t\t' sed 's/\t/ /g' cat -A 8. Szóközzel elválasztott mezők kezelése, pl.: három közül hagyjuk meg csak a második mezőt: cat a.txt aaa bbb ccc 111 222 333 cat a.txt sed -r 's/([^ ]+) ([^ ]+) ([^ ]+)/\2/' bbb 222 6

Ritkábban használt parancsok Operációs rendszerek I. - UNIX felhasználói ismeretek és héjprogramozás y/halmaz1/halmaz2/ Karaktercsere (az eredmény azonos a tr programéval). A két halmazban ugyanannyi karakternek kell lennie. Nem használhatóak karakterfelsorolások -el (mint a tr programnál). y/ax/ax/ cserél minden a és x kisbetűt nagyra a\ szoveg Hozzáfűzés (append) Csak egy cím használható a parancs előtt. A szoveg -et a mintatér tartalma után fűzi. Több sor beszúrása esetén mindig sorvégi \ -el kell jelezni, hogy ismét egy sor következik. Pl: i\ szoveg c\ szoveg a\ Elso sor\ masodik sor Fontos: az a, i, c parancsokkal beszúrt szövegek nem kerülnek további feldolgozásra. Beszúrás (insert) A mintatér elé fűzi a szöveget Változtat (change) kicseréli a mintatér tartalmát a szöveggel = kiírja a címzett sor számát a kimenetre. Például az alábbi sed szkript a wc -l parancsot helyettesítheti: = Az utolsó sornál kiírja a sor sorszámát, használata: cat test.txt sed -n '=' 3 r file w file n e shell_parancs Beolvassa a file állományt. Csak egy cím szerepelhet előtte. Ha a file nem olvasható, szó nélkül dolgozik tovább. A beolvasott szöveg a címzett sor után kerül a kimenetre. Kiírja a mintateret egy állományba. Az induláskor létrehozza, vagy törli az állományt ha az létezik. Ha a file név több w vagy s parancs utáni w kapcsolóban szerepel, ezeket ugyanabba az állományba írja egymás után. Következő sor, next: új sort vesz a feldolgozandó szövegből, a nélkül, hogy új ciklust kezdene. Ez előtt kiírja a mintateret (amennyiben ez nincs letiltva a -n kapcsolóval. Ha nincs több sor, a sed kilép. Az alábbi szkript a bemenet minden második sorát listázza: sed -n 'n; p' Az e parancs hatására a sed végrehajt egy parancsot a shell alatt, és a kimenetét a mintatérbe írja az éppen beolvasott sor elé. 7

A hold pufferre vonatkozó parancsok Operációs rendszerek I. - UNIX felhasználói ismeretek és héjprogramozás A hold puffer szövegsorok tárolását teszi lehetővé. Az alábbi műveleteket lehet végezni: N P h H g G x D Új sort vesz a bemenetről, egy újsor karaktert ír a mintatér végére, és utána illeszti a sort. Ha ez az utolsó bementi sor, a sed kilép. Kiírja a mintatér tartalmát az első újsorig. A mintateret átírja a hold térbe. A mintateret a hold tér végére írja egy újsor karakterrel együtt. get: átveszi a hold tér tartalmát a mintatérbe. A hold tér tartalmát a mintatér végére illeszti, elé egy újsor karaktert. kicseréli a hold és a mintatér tartalmát. kitöröl egy sort a mintatérből: az első újsorig. Ha marad még szöveg a mintatérben, akkor új ciklust kezd, anélkül, hogy új sort olvasna. Íme néhány UNIX körökben jól ismert példa: 1. beszúr egy üres sort minden sor után: cat teszt.txt sed 'G' 2. "Megfordítja" a bemeneti állományt, az utolsó sort elsőnek listázza: cat e.txt sed -n 'G;h; p' 3. Két egymás utáni sorból egyet állít elő: #!/bin/sed -nf #a program osszeragaszt ket egymas utani sort N #kovetkezo sor a mintaterbe s/\n// #atirom az ujsor karaktert a 2 sor kozott uresre 4. A tac parancs szimulálása ( a tac a cat fordított műveletét végzi, fordítva listázza az állományt, elsőnek az utolsó sort): #!/bin/sed -nf #forditva listaz ki egy allomanyt, mint a tac #hasznalat: # cat file sed -nf reverse.sed 1!G #visszakerem a teljes hold buffert, igy a mostani lesz az #elso sor #az elso sor eseteben nem kell ezt csinalni p #az utolso sornal nyomtatok h #az egeszet visszateszem a hold pufferbe 8

Ugyanennek a feladatnak egy másik megoldása az alábbi: cat file sed -n -r '1h;1!{x;H};{g;p}' Operációs rendszerek I. - UNIX felhasználói ismeretek és héjprogramozás 9