330 likes | 432 Views
Második kötelező feladat. 2010/2011-2 Operációs rendszerek awk. Beadási mód. Tar file File neve hxxxxxx.tar Pl. h123456.tar A tar egy könyvtárt tartalmaz A könyvtár neve hxxxxxx / Pl. h123456/ A könyvtárban van elhelyezve a feladat megoldása h123456.awk
E N D
Második kötelező feladat 2010/2011-2 Operációs rendszerekawk
Beadási mód • Tar file • File neve hxxxxxx.tar • Pl. h123456.tar • A tar egy könyvtárt tartalmaz • A könyvtár neve hxxxxxx/ • Pl. h123456/ • A könyvtárban van elhelyezve a feladat megoldása • h123456.awk • Ha shell script is tartozik a megoldáshoz, akkor azt is el kell helyezni • h123456.shnéven • Ha a feladathoz tartozik példa állomány, akkor a könyvtárban azt is el kell helyezni az alábbi néven • adat.txt
Beadási mód • A file tartalmazzon egy fejlécet a parancsértelmező fejléc után #! /bin/bash #################### # Nev: Karacsony Szilveszter # EHA-kód: VALAMI.SZE # h-azon.: h123456 # Feladat: 1. feladat # Gyak.vez.: Kozma Attila ####################
Beadási mód • 0 pont • Ha nem a megadottmódon lesz beküldve a feladat!!!
Határidő • biro.inf.u-szeged.hu • Aki még nem regisztrált • REGISZTRÁLJON!!! • http://biro.inf.u-szeged.hu/regiszt • 2011. május 1. 23:59:59 • A feladatok ki vannak/lesznek osztva a biro szerveren. • Nem fog ellenőrizni!!! • Többször is fel lehet tölteni (10) • Utolsó feltöltés számít • Időben kezdjenek hozzá a megoldáshoz!!!
1. feladat • Írjon awkszkriptet, ami egy nyomtatóra küldött feladatok napló fájljából összesíti a felhasználók havi nyomtatási oldalszámait. Emellett jelenítse meg, hogy az adott felhasználónak mennyit kell fizetnie a nyomtatásért, ha egy oldal 6 Ft. Végül összesítse a havi forgalmat és írja ki az utolsó sorba a kinyomtatott oldalak számát és a bevételt. A felhasználókat név szerint növekvő sorrendben jelenítse meg. • A naplófájl szerkezete (a mezők szóközökkel elválasztva): • USER NYOMTATOTT_OLDALAK PELDANYSZAM • Egy felhasználó oldalszámai kiszámíthatók a NYOMTATOTT_OLDALAK * PELDANYSZAM képlettel nyomtatási feladatonként.
1. feladat példa INPUT $ catlogfile pityuka 3 1 marcsi 2 1 pityuka 2 2 OUTPUT $ ./print_log.awklogfile marcsi 2 old. - 12 Ft pityuka 7 old. - 42 Ft --- Osszesen: 9 old. - 54 Ft
2. feladat • Írjon awkszkriptet, ami egy cég beléptető kártyás nyilvántartórendszer havi naplófájlját kapja paraméterül, majd feldolgozza az alkalmazottak ki- és belépési adatait. • A naplófájl tartalmazza a dolgozók nevét, a munkavégzés kezdetének és végének időpontját. Számolja ki a két időpont között eltelt időt és összesítse a ledolgozott munkaórákat az adott hónapra. Az emberek a ledolgozott munkaórák szerint kapnak fizetést és az egy napra előírt órák mennyisége 8 óra. Ha valaki kevesebbet dolgozik büntetést, ha többet jutalmat kap, ezért ezeket is összesíteni kell további két oszlopban. Végül minden emberre ki kell számolni, hány napot dolgozott a hónapban. • A bemenet formátuma (a mezők pontosvesszővel elválasztva): • NEV;KEZDES(HH:MM);VEG(HH:MM) • A kimenet formátuma (az elválasztó karakter tabulátor): • NEV LEDOLGOZOTT(HH:MM) TOBB(HH:MM) KEVESEBB(HH:MM) NAPOK
2. feladat példa INPUT $ catmarcius.txt Béna Béla;05:10;13:15 Dolgozó Emília;06:00;14:00 Kovács Cecília Emese;06:00;15:00 Dolgozó Géza;06:00;12:00 Béna Béla;05:10;13:15 Dolgozó Emília;06:00;14:00 Kovács Cecília Emese;06:00;15:00 OUTPUT $ ./osszesit.awkmarcius.txt Béna Béla 16:10 0:10 0:00 2 Dolgozó Elmília 16:00 0:00 0:00 2 Kovács Cecília Emese 18:00 2:00 0:00 2 Munkás Géza 6:00 0:00 2:00 1
3. feladat • Írjon awkszkriptet, ami ellenőrzi a megadott fájlban szereplő felhasználói adatokat (felhasználó név, e-mail cím, jelszó, felhasználói csoport, HOME könyvtár). Az adatok formája a következő (pontosvessző az elválasztó karakter): • USERNEV;E-MAIL;JELSZO;CSOPORT;HOME_KONYVTA • A mezőkre ezek a megszorítások vannak érvényben: • Minden sorban pontosan öt mező szerepel (ha ez nem teljesül a többit nem kell vizsgálni) • USERNEV és CSOPORT: csak az angol ábécé kis- és nagybetűit, valamint számokat tartalmazhat. Nem kezdődhet számmal • E-MAIL: AZONOSITO@HOST.DOMAIN, • ahol az AZONOSITO csak az angol ábécé kis- és nagy betűit, számokat és . (pont) karaktert tartalmazhat, úgy, hogy pontot nem követhet egy újabb pont • a HOST-ban csak az angol ábécé kisbetűi és a - szerepelhetnek és egymás után több HOST-ot is meg lehet adni ponttal elválasztva (pl.: stud.u-szeged) • DOMAIN legalább kettő, legfeljebb három karakterből (angol ábécé kis betűi) álló azonosító • (pl.: hu, com, org, edu, …) • JELSZO: angol ábécé kis- és nagybetűi, számok, \, _, / • HOME_KONYVTAR: abszolút útvonalat kell megadni • A mezők tartalmaznak legalább egy karaktert. • Ha egy sor valamelyik szabályt megsérti írja ki a képernyőre a sor számát és a megsértett szabályt szöveggel. • Azt is jelezze, ha minden szabály érvényes egy adott sorra.
3. feladat példa INPUT $ catusers.txt h123456;h123456@stud.u-szeged.hu;123*122;hallgatok;home/h123456 h1283; h654321;h654321@stud.u-szeged.hu;123/122;hallgatok;/home/h654321 OUTPUT $ ./validateUsers.awkusers.txt 1. sor: rossz a jelszoformatuma (123*122)! 1. sor: rossz a homekonyvtarformatuma (home/h123456)! 2. sor: nincs 5 rekord megadva! 3. sor: OK!
4. feladat • Írjon szkriptet, ami első paraméterként az ls-l parancs kimenetét várja. • A szkriptnek meg kell keresnie a listából a log-fájlokat, majd csökkenő sorrendben ki kell írnia, hogy az adott típusú log-fájlból mennyi van. • A log-fájlok alakja: 'vmi.log'. Az ilyen típusú további log-fájlok: 'vmi.log.1', 'vmi.log.2'... • A kikötés csak annyi, hogy az eredeti nevet egy pont majd egy számjegy kövesse. • Tehát pl. a 'vmi.log.5.gz' is 'vmi.log' típusú log fájl. (Megjegyzés: Ilyen fájlokat nagy eséllyel találsz a /var/log mappában.)
4. feladat példa INPUT összesen 15 drwxr-xr-x 2 rootroot 4096 2009-10-17 06:40 apparmor drwxr-xr-x 2 rootroot 4096 2010-04-02 15:39 apt -rw-r----- 1 syslogadm 28358 2010-04-09 09:17 auth.log -rw-r----- 1 syslogadm 9826 2010-04-05 23:19 auth.log.1 -rw-r----- 1 syslogadm 2092 2010-03-30 17:29 auth.log.2.gz -rw-r----- 1 syslogadm 625 2010-03-17 03:21 auth.log.3.gz -rw-r----- 1 syslogadm 752 2010-03-10 10:55 auth.log.4.gz -rw-r----- 1 rootadm 31 2009-10-28 21:55 boot -rw-r--r-- 1 rootroot 39960 2009-10-28 21:56 strap.log -rw-r--r-- 1 rootroot 39960 2009-10-28 21:56 bootstrap.log -rw-r--r-- 1 rootroot 39960 2009-10-28 21:56 bootstrap.log.gz -rw-r----- 1 syslogadm 274058 2010-04-09 10:14 daemon.log -rw-r----- 1 syslogadm 53932 2010-04-05 23:23 daemon.log.1 -rw-r----- 1 syslogadm 14815 2010-03-30 17:29 daemon.log.2.gz -rw-r----- 1 syslogadm 5681 2010-03-17 03:48 daemon.log.3.gz OUTPUT Log fajlokszama: auth.log : 5 daemon.log : 4 bootstrap.log : 1 strap.log : 1
5. feladat • Írjon olyan szkriptet, ami egy fájlt vár bemenetként. • A szkript soronként olvassa a fájlt, és • Ha egy olyan sort talál, amiben számok és összeadás vagy kivonásjelek követik egymást szóközzel elválasztva, • akkor végezze el a műveletet, majd írja ki az eredményt. • Ha két művelet vagy két szám követi egymást, akkor írjon ki hibát. • Feltehetjük, hogy más hiba nem fordulhat elő ezekben a sorokban. • Ha # jellel kezdődik a sor, akkor az utána levő részt írja ki. Bármely egyéb karakterrel kezdődő sort ugorja át.
5. feladat példa INPUT 1 + 2 - 4 + 3 #ez egy megjegyzés 1000 + 100 + 10 + 1 ezzel a soral nem csinál semmit 1 + 1 2 + 3 1 - - 2 OUTPUT 2 ez egy megjegyzés 1111 Hiba: ketszamegymasutan! Hiba: ketmuveletegymasutan!
6. feladat • Írjon szkriptet, ami egy szöveges állományt vár bemenetként. • A szkript keresse meg az email címeket, valamint a telefonszámokat. • Az email cím formája: 'vmi@vmi.vmi', • a telefonszám formája: +00/00-000-0000 ahol a 0 tetszőleges számjegyet jelöl. • A szkript keresse meg továbbá azokat az email cím – telefonszám párokat, amelyek ugyan abban a sorban vannak, és az email címet legfeljebb 20 karakter távolságra követi a telefonszám • (ez a 20 karakter nem tartalmazhat további email címet, és feltehetjük, hogy egy email cím egy sorban legfeljebb egyszer szerepel). • A szkript előbb írja ki ezeket a párosokat, majd írja ki a leggyakoribb email címeket és telefonszámokat, • majd írja ki, hogy hány email cím van átlagosan egy sorban, • végül, hogy hány telefonszám van átlagosan egy sorban.
6. feladat példa INPUT Loremipsumdolorsitamet, sasa@gmail.comconsecteturadipiscing elit. +36/30-333-0303 ultricesvel urna. Etiammassavelit, +36/80-121-0264 pretiumsitametvestibulumquis, auctor. Sedvestibulum mi utlacusscelerisquepretiumfringilla lizy17@freemail.hu feugiat. Curabiturinlacuseuliberoaccumsanrutrum. Morbiimperdserds@freemail.hu feugiat@gmail.comporttitor. +36/20-211-2345 Etiamquis +36/20-211-2345 massanecquam faucibus +36/20-211-2345 lacus non tinciduntorciconsectetur. +34/20-624-6321 Vivamus nacsosz@gmail.com sasa@gmail.com +36/20-211-2345 erostortor, adipiscingsitameteu, Duisultricies sem nec elit interdum sasa@gmail.comacfacilisisligula@hotmail.com OUTPUT Osszetartozoparosok: feugiat@gmail.com : +36/20-211-2345 sasa@gmail.com : +36/20-211-2345 Legtobbszorelofordulo email: sasa@gmail.com Legtobbszorelofordulotelefonszam: +36/20-211-2345 Emaileksoronkentigyakorisaga: 1 Telefonszamoksoronkentigyakorisaga: 0.875
7. feladat • Írjon awk scriptet, amely jelenléti alkalmak, valamint a zh pontszámok alapján meghatározza, hogy melyik hallgatók bocsáthatóak vizsgára. • A script egy fájlt kap, amelyben az adatok szóközökkel vannak elválasztva. Az első oszlopban a hallgató EHA kódja szerepel, amelyek 14 db ’+’ vagy ’-’ jel követ annak megfelelően, hogy a hallgató jelen volt-e az adott órán vagy nem. Ezután a 3 zh pontszáma következik, minden zh-ra maximálisan 10 pont kapható. Ha egy hallgató nem írta meg valamelyik zh-át, akkor az arra kapott pontszám hiányzik (nincs nulla írva helyette), és csak a két legjobb zh számít. • Egy hallgató akkor jelentkezhet vizsgára, ha legfeljebb két hiányzása van, valamint a két legjobb zh pontszámának összege elérte a két zh-ra kapható maximális pontszám felét. • Ha a hallgató vizsgázhat, a script írja ki a ’vizsgazhat’ szöveget, továbbá a hallgató által szerzett pontot zárójelben, ellenkező esetben a ’nemvizsgazhat’ szöveget.
7. feladat példa • $ catpontszamok.txtNAGRAAT.SZE + + + + - + + + + + + + - + 9 3 7DEGQABT.SZE + + + + + + + + + + + + + + 4 5 4PAZRAAT.SZE + + + - - + + + - + + + + + 7 8 6FOEPACT.SZE + + - + + + + + + + + + + + 6 8BALQAAT.SZE + + + + + + + + + + + + + + 10 9 10 • $ ./vizsgaztato.awkpontszamok.txtNAGRAAT.SZE vizsgazhat(16)DEGQABT.SZE nem vizsgazhatPAZRAAT.SZE nem vizsgazhatFOEPACT.SZE vizsgazhat(14)BALQAAT.SZE vizsgazhat(20)
8. feladat • Adott egy fájl, amely hallgatók EHA kódjait és részteljesítéseik pontszámait (összesen hallgatónként 5 db) tárolja úgy, hogy egy hallgató adatai egy sorban vannak, az EHA kóddal kezdődnek és az értékeket egy-egy tabulátor karakter választja el. • A fájlban olyan sorok is előfordulhatnak, amelyek nem EHA kóddal (7 ékezet nélküli nagybetű, és a .SZE szöveg) kezdődnek, ezeket kommentként kell értelmezni, azaz a számításoknál nem kell figyelembe venni. • Az EHA kóddal kezdődő sorok mindegyikében 5 számérték van. • Készítsen olyan awkszkriptet, amely kiírja a képernyőre szóközzel elválasztva azon hallgatók EHA kódját, akik 35-nél több pontot értek el összesen! • A szkript írja ki a képernyőre az átlagos elért összpontszámot is.
8. feladat példa • $ cathallgpont.txt • Delelotti csoport:XXXXAAT.SZE 5 12 9 4 15Delutani csoport:YYYYAAT.SZE 3 10 5 5 7ZZZZAAT.SZE 1 15 10 5 12 • $ ./feladat.awkhallgpont.txt • XXXXAAT.SZE ZZZZAAT.SZE Átlag: 39.3333
9. feladat • Adott egy 3 oszlopos fájl, melynek első két oszlopa egy-egy azonosítót tartalmaz, a harmadik oszlop pedig a két egyed közti távolságot • Írjon egy awk programot, amelyik ebből az állományból egy távolságmátrixot készít! • a adott két egyedhez nem tartalmaz a fájl távolságot, akkor azokra a helyekre N/A kerüljön • Vegye figyelembe, hogy ha az A B távolságérték sor szerepel a fájlban, akkor a • B A távolságérték sor nem fog, mert a távolság szimmetrikus. • Emellett az A A 0 sorok sem szerepelnek a fájlban, ugyanis bármely egyed önmagától vett távolsága 0. • A távolságmátrix elkészítése mellett számolja ki az egyedek közti átlagos, maximális és minimális távolságot!
9. feladat példa (input) • AN51 AN50 88AN52 AN50 167AN52 AN51 125AN53 AN50 81AN53 AN51 93AN53 AN52 170AN54 AN50 120AN54 AN51 119AN54 AN52 117 AN54 AN53 66…
9. feladat példa (távolságmátrix) • AN50 AN51 AN52 AN53 AN54 AN55 AN56 AN57 AN58 AN59 A50 0 88 167 81 120 100 131 87 115 82 A51 88 0 125 93 119 116 137 115 111 112 A52 167 125 0 170 117 133 80 124 113 142 A53 81 93 170 0 66 47 88 53 51 41 A54 120 119 117 66 023 55 43 38 49 A55 100 116 133 47 23 0 60 36 32 32 A56 131 137 80 88 55 60 0 58 65 62 A57 87 115 124 53 43 36 58 0 36 31 A58 115 111 113 51 38 32 65 36 0 43 A59 82 112 142 41 49 32 62 31 43 0
10. feladat • Írjon egy olyan awk scriptet, amely CSV formátumban tárolt táblázatot képes HTML táblázattá konvertálni. • Precízebben, a CSV formátum egy olyan szöveges formátum, amely táblázatok leírását teszi lehetővé. Az állomány minden sora a táblázat egy sorának felel meg. • A táblázat celláit a szöveges állomány soraiban vesszők határolják. • Ezt a tárolási formát kell HTML táblázattá alakítani. • A HTML egy szöveges jelölő nyelv, amelyben a táblázatokat <tableborder=”1”> és </table> jelölőelemek közzé írjuk. • A táblázat sorait <tr> és </tr> jelölők közzé tesszük, míg a táblázat egyes celláit <td> és </td> elemek közzé írjuk. • A HTML állományok tetszetős megjelenítésére a webböngészők használhatóak.
10. feladat • $ catsample.csv; catsample.csv | awk-fprogram.awk > sample.html; catsample.html • 1,2,3 • 4,5,6 • <html> • <head> • <title>HTML táblázat</title> • </head> • <body> • <tableborder="1"> • <tr> • <td>1</td> • <td>2</td> • <td>3</td> • </tr> • <tr> • <td>4</td> • <td>5</td> • <td>6</td> • </tr> • </table> • </body> • </html>
11. feladat • Adott egy terület, amit térfigyelő kamerákkal őriznek. • A kamerák mindig az órák elején (xy:00-kor) kapcsolnak be és utána egész számú órán keresztül maradnak bekapcsolva. • Egy adott nap kamera aktivitását tartalmazó log fájl a következőképpen felépülő rekordokból áll: • kamera száma:bekapcsolás ideje órában megadva:kikapcsolás ideje órában megadva • az órák a [0, 24] intervallumba esnek • Írjon olyan awk scriptet, aminek egyetlen paramétere egy fenti típusú logfájl. • A script gyűjtse ki időrendi sorrendben a fehér foltokat, azaz azokat az órákat, amikor egyik kamera sem működött és írja ki a standard outputra. • Írja ki a fehér foltok összidejét is
11. feladat példa INPUT $catcamera.log 1:09:13 2:12:22 3:01:12 2:08:11 3:07:08 1:00:22 OUTPUT $./terfigyelocamera.log Feher foltok 22-23 23-24 Teljes ido: 2 ora
12. feladat • Adott egy tűzfal log fájlja, ami minden sorában felhasználók böngésző előzményeit tartalmazza a következő felépítés szerint: • felhasználó neve;meglátogatott weboldal neve;látogatás időpontja • Írj olyan awk scriptet, ami kilistázza a standard outputra a 3 leglátogatottabb weboldalt. • Az egyes oldalak mellé írd ki azt is, hogy hányszor látogatták meg őket. • Ha valamelyik helyen holt verseny alakulna ki, minden azonos helyezésű oldalt írj ki.
12. feladat példa INPUT $catfirewall.log rossz_tanulo;c;2010-03-22:0356 rossz_tanulo;www.inf.u-szeged.hu;2010-03-22:0350 jo_tanulo;www.freeforum.oprdsz.hu;2010-03-21:1616 jo_tanulo;www.inf.u-szeged.hu;2010-02-23:1250 jo_tanulo;www.gmail.com;2010-01-12:1245 user;www.gmail.com;2010-02-19:1901 rossz_tanulo;www.gmail.com;2010-02-19:1903 kozepes_tanulo;www.gmail.com;2010-04-01:1121 kozepes_tanulo;www.inf.u-szeged.hu;2010-03-22:0750 OUTPUT $./top3 firewall.log 1. www.gmail.com 2. www.inf.u-szeged.hu 3. www.freeforum.oprdsz.hu 3. www.puska.hu
13. feladat • Írjon szkriptet, mely paraméterként egy fájlt vár, • amely az ls-lRparancs egy lehetséges kimenetét tartalmazza. • A szkript kiírja azoknak a fájloknak a nevét, • melyek legalább 3 könyvtár mélységben helyezkednek el az aktuális könyvtárhoz képest. • A kiírás után a felhasználótól várja az egyik fájl nevét, majd kiírja annak a méretét.
14. feladat • Írjon szkriptet mely paraméterként egy fájlt vár. • A fájl tartalma • országok, tájegységek, kiinduló pontok, cél pontok és távolságok ;-vel elválasztott sorozata. • A szkript feladata az útvonalak darabszáma szerint csökkenő sorrendben megadni az országokat, • valamint az útvonalak összhossza szerint növekvő sorrendben megadni a tájegységeket.
14. feladat példa INPUT Magyarország; Börzsöny; Nagybörzsöny; Márianosztra; 18 Románia; Kelemen-havasok; Maroshévíz, Pietros, 25 Magyarország; Mátra; Gyöngyös; Mátraszentistván; 23 Magyarország; Börzsöny; Diósjenő; Nagy-hideg-hegy; 12 OUTPUT Országok: Magyarország 3 Románia 1 Tájegységek: Mátra 23 Kelemen-havasok 25 Börzsöny 30