Operációs rendszerek gyakorlat 2008.11.25. sed, awk parancsok.

Slides:



Advertisements
Hasonló előadás
Szerver oldali programozás
Advertisements

C++ programozási nyelv Gyakorlat hét
Operációs rendszerek gyakorlat 10. Gyakorlat Vakulya Gergely.
Jt Java Feltételek, logikai kifejezések. jt 2 Logikai operátorok Logikai kifejezésekre alkalmazhatók a következő műveletek: 1. nem! 2. és&ill.&& 3. kizáró.
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
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
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.
UNIX Összefoglaló az alapokról a ta65 tárgyhoz ( )
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 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.
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:
Access XP Kifejezés-szerkesztő Összehasonlító operátorok:
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
Űrlapok és keretek.
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.
1 Operációs rendszerek I, 3. gyakorlat Windisch Gergely
Turbo Pascal Indítás: C:\LANGS\Turbo Pascal Turbo Pascal.
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.
Csempe Programozás érettségi mintafeladat
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.
C Programozási alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 3. gyakorlat.
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.
Script nyelvek előadás
PHP függvények MySQL adatbázisok kezelésére
Script nyelvek előadás
Script nyelvek előadás
AWK ismétlés AWK: adatvezérelt nyelv:
Script nyelvek előadás
Programozás C# -ban Elágazások.
A CLIPS keretrendszer
Bevezetés a programozásba Algoritmikus gondolkodás
Programozási nyelvek alapfogalmai
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Előadás másolata:

Operációs rendszerek gyakorlat sed, awk 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_out sed ‘s/nappal/este’ file_in

Példa sed ‘s/nappal/este/’ file_out ssearch parancsot jlezi /../../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_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. ha pl. zárójelbe akarjuk tenni: sed ‘s/[0-9]/(&)/’ file_out sed ‘s/[0-9]/(&)/’ file_in

Globális csere Alapesetben csak az első illeszkedést cseréli Ez kiterjeszthető a 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 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 pedig használjuk a \1 karaktersort sed ‘s/\([0-9]*\)/(\1)/g’ file_in Több ilyen rész is kijelölhető, mindegyikre a számával hivatkozhatunk: \1, \2, \3, …, \9 ez hasznos lehet pl. felcserélésnél sed ‘s/\([0-9]*\)\([a-z]* \)/\2\1/g’ file_in

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 abc123  abc(1)(2)(3) abc123  abc(123)

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}