Operációs Rendszerek Gyakorlat Triviális segédfeladatok 2009. június 4. Összeállította: Méreg Balázs (mbalazs@varfok.vein.hu) Külsı forrás: 2009. május 26-i beugró 1. PERL Tömbök és hashek Feladat: 2009. május 26-i beugró Írjunk perl scriptet atnevez.pl néven amely a standard inputról beolvassa a forrásfájl és a kimeıfájl nevét, majd a forrásfájlból átmásolja a benne található névsort a kimenı fájlba oly módon, hogy az azonos vezetéknevő embereket átkereszteli számok hozzáadásával. Például az elsı Kovács vezetéknevő Kovács1 lesz, a negyedik Kovács4, stb. Csak akkor szabad átkeresztelni, ha az adott névbıl több is van! Példa a mőködésre perl atnevez.pl bemenet: lista_nagy.txt kimenet: kimenet.txt A lista_kicsi.txt tartalma Tal Anett Pannonhalma 9090 06-20-958-2732 Sipos Anett Kisvejke 7183 06-20-781-2555 Tal Bela Kenez 9752 06-82-111-289 Sipos Gergely Gulacs 4842 06-82-217-675 Sipos Geza Felsodobsza 3847 06-82-217-657 A kimenet.txt tartalma Tal1 Anett Pannonhalma 9090 06-20-958-2732 Sipos1 Anett Kisvejke 7183 06-20-781-2555 Tal2 Bela Kenez 9752 06-82-111-289 Sipos2 Gergely Gulacs 4842 06-82-217-675 Sipos3 Geza Felsodobsza 3847 06-82-217-657
2. PERL Tömbök és rendezés Feladat: variáljuk a nevek sorrendjét! Írjunk perl scriptet rendez.pl néven amely a standard inputról beolvassa a forrásfájl és a kimenı fájl nevét, majd a forrásfájlból átmásolja a benne található névsort a kimenı fájlba oly módon, hogy a név oszlopában levı elemek sorrendjét megfordítja, tehát általában az így kapott sorokban az egyes emberek nem a saját adataikat kapják meg. Példa a mőködésre: perl rendez.pl bemenet: lista_nagy.txt kimenet: kimenet.txt A lista_kicsi.txt tartalma Tal Anett Pannonhalma 9090 06-20-958-2732 Sipos Anett Kisvejke 7183 06-20-781-2555 Tal Bela Kenez 9752 06-82-111-289 Sipos Gergely Gulacs 4842 06-82-217-675 Sipos Geza Felsodobsza 3847 06-82-217-657 A kimenet.txt tartalma Szasz Geza Pannonhalma 9090 06-20-958-2732 Sipos Geza Kisvejke 7183 06-20-781-2555 Sipos Gergely Kenez 9752 06-82-111-289 Tal Bela Gulacs 4842 06-82-217-675 Sipos Anett Felsodobsza 3847 06-82-217-657 Tal Anett Felsodobsza 3847 06-70-343-8915 Módosítsuk úgy a feladatot, hogy megfordítás helyett... rendezze ıket ABC-szerint növekvı sorrendbe Sipos Anett Pannonhalma 9090 06-20-958-2732 Sipos Gergely Kisvejke 7183 06-20-781-2555 Sipos Geza Kenez 9752 06-82-111-289 Szasz Geza Gulacs 4842 06-82-217-675 Tal Anett Felsodobsza 3847 06-82-217-657 Tal Bela Felsodobsza 3847 06-70-343-8915 rendezze ıket keresztnevük szerint ABC-szerint csökkenı sorrendbe Írjuk ki fordítva a vezetéknevet és a keresztnevet (mint a külföldi neveknél) annál, akinek a telefonszáma 4-nél több páratlan számot tartalmaz
3. PERL Reguláris kifejezések Feladat: szőrjünk! Írjunk perl scriptet, amely beolvassa a lista_nagy.txt-t, majd a kimenet.txt-be beleírja azon személyek nevét, amelyek vezetékneve és keresztneve azonos betővel kezdıdik. A feladatot reguláris kifejezéssel oldjuk meg! Példa a mőködésre: perl f3.pl A kimenet.txt tartalma: Maurer Matyas Csanadpalota 6913 06-84-315-164 Domjan David Tikos 8731 06-20-911-2686 Panyi Peter Merenye 7981 06-70-185-3550 Majer Marta Hajos 6344 06-85-127-305 Kovacs Karoly Markotabodoge 9164 06-84-180-306 Kristof Kitti Tyukod 4762 06-70-289-1391 Módosítsuk úgy a scriptet, hogy csak azokat a rekordokat írja ki, ahol a vezetéknév, keresztnév és település neve is azonos betővel kezdıdik. A kimenet.txt tartalma: Sike Soma Szerecseny 9125 06-70-151-1180 Kovesdi Kornel Kajarpec 9123 06-88-223-728 4. PERL Reguláris kifejezések Feladat: csere Írjunk perl scriptet, amely a standard bemenetrıl olvas be sorokat EOF-ig (Ctrl+D). Minden sorról döntse el, szerepel-e benne a kutya és a macska szó. Abban az esetben, ha mindkettı szerepel, cserélje meg ıket. Ha csak az egyik szerepel, azt cserélje ki a másikra. a kutyak az urak, a macskak csak vinnyognak a macskak az urak, a kutyak csak vinnyognak mico egy macska es nem eszi meg a kutyakat mico egy kutya es nem eszi meg a macskakat kutyabol nem lesz szalonna macskabol nem lesz szalonna a macskak whiskast vennenek a kutyak whiskast vennenek
5. PERL Csere reguláris kifejezéssel Feladat: bönészı Írjunk egy perl scriptet bongeszo.pl néven, amely egy leegyszerősített, kezdetleges web-böngészıt valósít meg. A programnak nem kell internetre kapcsolódnia, a bemenetet egy fájlból kapja, amelynek a nevét az alapértelmezett bemenetrıl kéri be. Ha nem létezik a fájl, dobjon hibaüzenetet és lépjen ki. Ha létezik, értelmezze a fájlban levı HTML kódot és írja ki úgy, hogy az könnyedén olvasható legyen. A következı HTML tag-eket kell figyelembevenni, minden más taget töröljünk (ne jelenjen meg a kimeneten)... KOMMENT <!-- <a href = --> <!-- akarmi --> Ha a program kommentet talál, azt semmiképp ne írja ki és ne is értelmezze, magyarul törölje a kimenetrıl. Figyeljünk a többszörözı operátorok mohóságára! TITLE <title>... valami szoveg... </title> <TITLE>... valami szoveg... </TITLE> Ha a program title taget talál, azt a következı formátumba jelenítse meg (végére tegyen sortörést, hogy elkülönüljön a többi szövegtıl): @@@@@@@@@@@@@@@... valami szoveg... @@@@@@@@@@@@@@@ HIVATKOZÁS <a href=i_nappali.html>op.rendszerek gyak hataridok (nappali)</a> <a href="e_nappali.html">op.rendszerek gyak eredmenyek (nappali)</a> <A HREF='readme.html'>Leiras a rendszer hasznalatahoz</a> Ha hivatkozás tag-et talál, a következıképpen jelenítse meg: Op.rendszerek gyak hataridok (nappali) [i_nappali.html] Op.rendszerek gyak eredmenyek (nappali) [e_nappali.html] Leiras a rendszer hasznalatahoz [readme.html] Tipp: behelyettesítı blokk, globális csere, kis- és nagybetőérzékeny kikapcsolása,? regex operátor (nullaszor vagy egyszer) Minden más itt nem felsorolt taget, tehát < és > között elhelyezkedı sztringet töröljön és ne jelenítsen meg a kimeneten! A HTML entitásokat (pl. é) NEM KELL dekódolni, ilyenek nincsenek a példában.
6. Bash szkriptelés Számológép Kulcsszavak: while, read, case, aritmetikai blokk behelyettesítése Írjunk olyan számológépet szamgep.sh néven bash-ben, amely képes értelmezni a négy alapmőveletet két operandussal. A program interaktív legyen és addig olvasson be a bemenetrıl kifejezéseket, amíg be nem írjuk az exit parancsot. Bontsuk három paraméterre a bekért sort úgy, hogy az elsı az elsı számot, a második a mőveletet (meg, bol, szor vagy szer, osztva, azaz összeadás, kivonás, szorzás, osztás), a harmadik a második számot jelentse, majd számoljuk ki az eredményt és írjuk ki a képernyıre az eredeti paraméterekkel együtt, de a mőveletet itt már mőveleti jellel jelöljük (pl. 5*5 = 25). Ügyeljünk arra, hogy szorzásnál mind a szor, mind a szer kifejezés érvényes mővelet legyen! Minimális, primitív hibakezelés: Ha nem definiált mőveletet írnak be, írjuk ki, hogy Ervenytelen muvelet! Ha három paraméternél kevesebbet olvasunk be, írjuk ki, hogy Hianyzo parameter! Példa a mőködésre chmod +x szamgep.sh./szamgep.sh 6 meg 6 6+6 = 12 12 szor 25 12*25 = 300 5 szor 5 5*5 = 25 40 szer 10 40*10 = 400 9 bol 6 9-6 = 3 nem tudom mivan Ervenytelen muvelet! para meter Hianyzo parameter! 5 szor Hianyzo parameter! exit