Operációs rendszerek 6. gyakorlat sed parancsok. Sed parancs Stream editor – folyamban lévő szöveg szerkesztése Pl.: szöveg lecserélésére Működése: Keres.

Slides:



Advertisements
Hasonló előadás
Operációs rendszerek gyakorlat 10. Gyakorlat Vakulya Gergely.
Advertisements

Determinisztikus programok. Szintaxis: X : Pvalt program változók E : Kifkifejezések B : Lkiflogikai kifejezések C : Utsutasítások.
Táblázat kezelő programok
JavaScript.
Sztringek.
Sztringek  Az fscanf() és a fprintf() függvényeknél a %s-es formátumtagot kell használni.  A %s formátumtag az első white space karakterig folytatja,
Bevezetés a Java programozásba
Bevezetés a Java programozásba
Adatbázis alapú rendszerek
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 9. Gyakorlat Alap file műveletek.
Programozás II. 3. Gyakorlat C++ alapok.
A CLIPS keretrendszer CLIPS "C" Language Integration Production System.
Programozás I. Horváth Ernő.
Operációs rendszerek gyakorlat
Scriptnyelvek 9. gyakorlat Papp Gyula április 29.
PHP Webprogramozás alapjai
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Operációs rendszerek gyakorlat Reguláris kifejezések.
Operációs rendszerek gyakorlat sed, awk parancsok.
Vizuális és web programozás II.
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Operációs rendszerek gyakorlat 4. Gyakorlat Vakulya Gergely.
Operációs rendszerek gyakorlat 2. Gyakorlat Vakulya Gergely.
Operációs rendszerek gyakorlat 6. Gyakorlat Vakulya Gergely.
Operációs rendszerek gyakorlat 9. Gyakorlat Vakulya Gergely.
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
Programozás C# -ban Elágazások.
Access XP Kifejezés-szerkesztő Összehasonlító operátorok:
Összetett adattípusok
Összetett adattípusok a Pascal nyelvben
Programozási nyelvek Páll Boglárka.
A Pascal programozási nyelv alapjai
Ciklusok: 2. Előltesztelő ciklus
A Pascal programozási nyelv alapjai
Tömbök és programozási tételek
Fájlkezelés Pascalban
Szintaktikai, szemantikai szabályok
1.3. Pascal program felépítése Az els ő program. Program ; … Begin … End. Program fej Deklarációs rész Végrehajtó rész.
PHP nyelv. PHP Interpreteres nyelv → parancsértelmező szükséges hozzá Rasmus Lerdorf 1995 → személyes felhasználás (internetes önéletrajzának megtekintésének.
Körlevél.
1 Operációs rendszerek I, 3. gyakorlat Windisch Gergely
Programozási alapismeretek 11. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom  Rendezési.
Visual Basic 2008 Express Edition
Java programozási nyelv Vezérlési szerkezetek
Java programozási nyelv Filekezelés
Komoróczy Tamás 1 Java programozási nyelv Stringek.
Java programozási nyelv Metódusok
Csempe Programozás érettségi mintafeladat
– SELECT - 2. – Tarcsi Ádám március Adatbázis gyakorlat.
Objektum orientált programozás
Webprogramozó tanfolyam
Objektum orientált programozás
Power Lutár Patrícia Pellek Krisztián.  -ltLess than  -leLess than or equal to  -gtGreater than  -geGreater than or equal to  -eqEqual to  -neNot.
Táblázatkezelés KÉPLETEK.
HTML ÉS PHP (Nagyon) rövid áttekintés. ADATBÁZISRENDSZEREK MŰKÖDÉSI SÉMÁJA Felh. interakció DB Connector MySQL ? A gyakorlaton:
Operációs rendszerek gyakorlat sed parancsok.
Fontos tudnivalók A MATLAB egy fajta objektummal dolgozik (Mátrix)
C Programozási alapok.
C++2. Ciklusok elöltesztelő (for, while) A ciklusmag feldolgozása előtt történik a vizsgálat  lehet, hogy egyszer sem fut le. A soronkövetkező iteráció.
Statisztikai és logikai függvények
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Utasítás és blokk. Elágazás típusai, alkalmazása Kovács.
Készítette: Rummel Szabolcs Elérhet ő ség: Linux kezelése.
PHP függvények MySQL adatbázisok kezelésére
Script nyelvek előadás
AWK ismétlés AWK: adatvezérelt nyelv:
Total commander.
Programozás C# -ban Elágazások.
A CLIPS keretrendszer
Programozási nyelvek alapfogalmai
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Előadás másolata:

Operációs rendszerek 6. gyakorlat sed parancsok

Sed parancs Stream editor – folyamban lévő szöveg szerkesztése Pl.: szöveg lecserélésére Működése: Keres (a reguláris kifejezés alapján) Lecserél (az illesztett mintát a helyettesítő szövegre) Kiír (képernyőre, fájlba) Pl.: sed ‘s/nappal/este’ file_in >file_out sed ‘s/nappal/este’ file_in

Példa sed ‘s/nappal/este/’ file_in >file_out ssearch parancsot jelezi /../../a per jel az elválasztó jel (más is lehet, #) nappalegy reguláris kifejezés estea helyettesítendő szöveg sed ‘s#nappal#este#’ file_in >file_out

& jel Ha a reguláris kifejezésre illesztett szöveget is fel szeretnénk használni a helyettesítő szövegben - & jellel megtehető. Pl.: ki akarjuk egészíteni a szöveget, stb. pl. ha zárójelbe akarjuk tenni a megtalált stringrészt sed ‘s/[0-9]/(&)/’ file_in >file_out sed ‘s/[0-9]/(&)/’ file_in pl. vagy ha csillagok közé akarjuk tenni sed ‘s/[0-9]/*&*/’ file_in

Globális csere Alapesetben csak az első illeszkedést cseréli Ez kiterjeszthető a teljes (globális) szövegre: sed ‘s/[0-9]/(&)/g’ file_in

Illeszkedő kifejezés egy része Ha az illeszkedő reguláris kifejezés egy részét kívánjuk csak felhasználni: Ekkor a tárolni kívánt részt tegyük zárójelbe () a reguláris kifejezésben (‘bebuffereljük’) Megjegyzés: a zárójel speciális karakter, így védeni kell a speciális jelentéstől backspashekkel: \( \) A helyettesítő részben hivatkozhatunk az egyes buffer tartalmakra sorszámukkal (hányadik zárójelbeli kifejezésrész) pl.: \1 első zárójeltartalom sed ‘s/\([0-9]\+\)/(\1)/g’ file_in

Illeszkedő kifejezés egy része Több ilyen rész is kijelölhető, mindegyikre a számával hivatkozhatunk: \1, \2, \3, …, \9 ez hasznos lehet pl. felcseréléses feladatoknál sed ‘s/\([0-9]\+\)\([a-z]\+ \)/\2\1/g’ file_in

String törlése \l karakter segítségével sed ‘s/\([0-9]\+ \)/\l/g’ file_in Más megoldás?

abc abc Példa Cseréljük fel a stringben a betűket és számokat. sed ‘s/\([a-z]\+\) \([0-9]\+\)/\2\1/g’ file_in

Feladat Tegyük zárójelbe a számokat, de ne egyesével, hanem csoportosan: sed ‘s/\([0-9]\)/(&)/g’ file_in sed ‘s/\([0-9]*\)/(&)/g’ file_in sed ‘s/\([0-9]+\)/(&)/g’ file_in sed ‘s/\([0-9]\+\)/(&)/g’ file_in sed ‘s/\([0-9][0-9]*\)/(&)/g’ file_in abc123  abc(1)(2)(3) abc123  abc(123)

Feladatok 1.Egy ’honap.txt’ nevű fájlban hogyan cserélné le a january hónap nevét 01. számra, mely után zárójelben szerepeljen az eredeti név is: january  01. (january) 2.Egy szövegben ‘titkosítani’ kellene a neveket. Hogyan cserélné le a nagybetűvel kezdődő, utána csak kisbetűket tartalmazó neveket ‘xxx’ karaktersorra: Barbara  xxx 3.Elírás történt egy fájlban. Hogyan cserélné le a 19-cel kezdődő évszámokat 20-szal kezdődőre. (évszám 4 karakter!): 1908  Töröljön ki egy konyv.txt nevű állományban minden a betűt! 5.Hogyan cserélne le egy állományban kis vagy nagy A-val kezdődő, számot nem tartalmazó, kis vagy nagy Z-re végződő szavakat 3 darab nagy A-ra? AbcdxyZ  AAA

Operációs rendszerek gyakorlat awk parancsok

Awk parancs A.V. Acho P.J. Weinberger B.W. Kernigham Újabb verziói: gawk mawk Felhasználása: programozási nyelv implemetálására assembler awk

Adatvezérelt programozási nyelv Adat + mit kell vele csinálni Szintaxisa awk ‘/minta/{parancs}’ file Minta, ami illeszkedik egy szövegdarabra, és a művelet. Minta: per jelek közé, reguláris kifejezés. Illeszkedés esetén futtatja a parancsrészt. Egyéb esetben nem történik semmi. Több mint és parancs is megadható.

Legegyszerűbb eset Ha nem adunk meg mintát Ekkor a fájl minden sorát fel akarjuk dolgozni Pl.: kinyomtatni awk ‘{print}’ file

Feladat Hozzunk létre egy foo_test nevű fájlt a következő tartalommal: awk ‘{print}’ foo_test awk ‘/foo/ {print}’ foo_test foo124 bar216 alma37 foot48 mofoo59 korte65 7foo1

Két szabály megadása Több sorban egy aposztófon belül megadható több szabály is: awk ‘/12/ {print „Bingo”} /21/ {print „Bongo”}’ foo_test

Elválasztó jelek Rekordok A program a bemeneti fájlt rekordokban olvassa be, és dolgozza fel. Alapesetben a rekordelválasztó jel a \n sortörés – azaz soronként történik a feldolgozás. Ez a jel az RS (record separator) változóban van eltárolva. Mezők A rekordok mezőkre vannak osztva. Alapesetben a mezőelválasztó a TAB, SPACE vagy újsor. Egy mezőre a $ jellel hivatkozhatunk: első mező a $1, második a $2, stb. Az awk tudja, hogy az aktuális rekordban hány mező van – amit az NF (number of field) változóban tárol Ezek a változók felhasználhatók az awk-ban.

Példa echo ‘Ez egy hosszú sor’ | awk ‘{print $4 $3 $2 $1}’ echo ‘Ez egy hosszú sor’ | awk ‘{print $4, $3, $2, $1}’ echo ‘Ez egy hosszú sor’ | awk ‘{print $4 ” ” $3 ” ” $2 ” ” $1}’ echo ‘Ez egy hosszú sor’ | awk ‘{print NF}’ Feladat: Nyomtassuk ki a sor utolsó mezőjét, ha nem tudjuk pontosan hány mezőből áll a sor!

Mi az $0? $0 – jelentése a teljes rekord Pl.: egy teljes fájl kinyomtatása: awk ‘{print $0}’ file

Több parancs kiadása Lehetséges, egymással ;-vel elválasztva, mint a C-ben awk ‘{print $0; print $0}’ file

Műveletek mezőértékekkel Az awk képes egy adott szöveget szövegként és számként is kezelni. awk ‘{print $1”:” $2+$3}’ file Megjegyzés: nincs hiba, ha szöveget kell kezelni, ekkor a számérték 0.

Begin –End minták Begin minta – a bemeneti fájlok feldolgozása előtt illeszkedik és fut le End minta – fájlok feldolgozása után használható Pl.: awk ‘BEGIN {sum = 0} {sum = sum + $3} END {print „Az összeg: ” sum}’ test

Matematikai műveletek awk-ban változó = érték értékadás - xnegálás x + yösszeadás x - ykivonás x * yszorzás x / yosztás x ^ yhatványozás x % ymodulo osztás x++növelés ++xnövelés x--csökkentés --xcsökkentés

Igaz, hamis, logikai x < y x <= y x > y x >= y x == y x != y x && yx ÉS y x || yx VAGY y !xNEM x

Vezérlés átadó kifejezések if feltétel { művelet } if feltétel { művelet } else { művelet } while ( feltétel ) { műveletek } for (inicializalas ; feltétel ; növelés ) { műveletek }

Feladatok 1.Nyomtassunk ki egy file-ból minden második mezőt 2.Nyomtassuk ki a számokat 1-tol 10-ig 3.Nyomtassuk ki a sorok számat egy file-ban, mint a wc parancs. 4.Hogyan lehetne minden második sort kinyomtatni: 5.Írjuk ki azokat a felhasználókat, akik le vannak tiltva. A letiltás azt jelenti hogy egy * jel van a jelszó helyén: 6.Nagyon sok függvényt ismer az AWK, pl a length a szöveg hosszát adja meg. Így hogyan lehetne a leghosszabb sor méretét kinyomtatni? 7.Írjunk programot, mely ugyanúgy működik, mint a wc program, vagyis kiírja a sorok, szavak és karakterek számat:

Megoldások 1. awk '{ for(i=1; i<=NF; i+=2) print $i }' test 2. awk 'BEGIN { for(i=1; i<=10; i++) print i}‘ 3. awk 'END { print NR }' test vagy awk 'BEGIN { s=0;} {s = s + 1} END { print s}' test

Megoldások 4. awk '{ if ( NR % 2 == 0 ) print $0}' test 5. awk 'BEGIN { FS=":" } {if ($2 == "*") print $1 " letiltva"}' /etc/passwd 6. awk '{ if (length($0) > max ) max = length($0) } END { print max }' test 7. awk '{szo = szo + NF; kar = kar + length($0)} END{ print NR,szo,kar}