Operációs rendszerek gyakorlat 2009.04.15. sed parancsok.

Slides:



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

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ó.
Determinisztikus programok. Szintaxis: X : Pvalt program változók E : Kifkifejezések B : Lkiflogikai kifejezések C : Utsutasítások.
2012. március 6. Rózsa Győző Interaktív környezet március Rózsa Győző
Táblázat kezelő programok
LINUX/UNIX PARANCSOK.
JavaScript.
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.
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 gyakorlat sed, awk parancsok.
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.
Operációs rendszerek gyakorlat Fájlműveletek.
Vizuális és web programozás II.
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:
PHP III. Fájlok, űrlapok.
Access XP Kifejezés-szerkesztő Összehasonlító operátorok:
A Pascal programozási nyelv alapjai
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.
Körlevél.
1 Operációs rendszerek I, 3. gyakorlat Windisch Gergely
Készítette: Csíki Gyula
Turbo Pascal Indítás: C:\LANGS\Turbo Pascal Turbo Pascal.
PARANCSOK HASZNÁLATA WINDOWS-BAN ÉS LINUXBAN II. Balaton Marcell Balázs.
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.
Fontos tudnivalók A MATLAB egy fajta objektummal dolgozik (Mátrix)
C Programozási alapok.
Programozási alapismeretek 11. előadás
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 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_out sed ‘s/nappal/este/’ file_in

Példa sed ‘s/nappal/este/’ 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_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: sed ‘s/[0-9]/(&)/’ file_out sed ‘s/[0-9]/(&)/’ file_in A számokat pl vagy 678 zárójelbe szeretném tenni. A számokat pl. (12345) vagy 678 zárójelbe szeretném tenni.

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 A számokat pl vagy 678 zárójelbe szeretném tenni. A számokat pl. (12345) vagy (678) zárójelbe szeretném tenni.

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]{4} \).[01][0-9].[0-3][0-9]./(\1)/g’ file_in Mai dátum: Mai dátum: 2009

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ésnél sed ‘s /\([0-9]{4} \).\([01][0-9]\).\([0-3][0- 9]\)./\3.\2.\1 /g’ file_in Mai dátum: Mai dátum:

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-val 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?

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 aposztró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. Mezőelválasztó jel: FS (field separator)-ban tárolódik

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! echo ‘Ez egy hosszú sor’ | awk ‘{print $NF}’

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 }

Példa Mezőelválasztó jel: FS Feladat: az /etc/passwd fájlból szeretnénk kinyomtatni a home könyvtárakat ebben az állományban az elválasztó a : Pl.: awk ‘BEGIN {FS = „:”} {print $3}’ /etc/passwd

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}