Operációs Rendszerek Gyakorlat Triviális segédfeladatok – 2009. június 4. Összeállította: Méreg Balázs (
[email protected]) 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 Sipos Anett Tal Bela Sipos Gergely Sipos Geza Szasz Geza
Pannonhalma Kisvejke Kenez Gulacs Felsodobsza Felsodobsza
9090 7183 9752 4842 3847 3847
06-20-958-2732 06-20-781-2555 06-82-111-289 06-82-217-675 06-82-217-657 06-70-343-8915
9090 7183 9752 4842 3847 3847
06-20-958-2732 06-20-781-2555 06-82-111-289 06-82-217-675 06-82-217-657 06-70-343-8915
A kimenet.txt tartalma Tal1 Anett Sipos1 Anett Tal2 Bela Sipos2 Gergely Sipos3 Geza Szasz Geza
Pannonhalma Kisvejke Kenez Gulacs Felsodobsza Felsodobsza
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 Sipos Anett Tal Bela Sipos Gergely Sipos Geza Szasz Geza
Pannonhalma Kisvejke Kenez Gulacs Felsodobsza Felsodobsza
9090 7183 9752 4842 3847 3847
06-20-958-2732 06-20-781-2555 06-82-111-289 06-82-217-675 06-82-217-657 06-70-343-8915
9090 7183 9752 4842 3847 3847
06-20-958-2732 06-20-781-2555 06-82-111-289 06-82-217-675 06-82-217-657 06-70-343-8915
A kimenet.txt tartalma Szasz Geza Sipos Geza Sipos Gergely Tal Bela Sipos Anett Tal Anett
Pannonhalma Kisvejke Kenez Gulacs Felsodobsza Felsodobsza
Módosítsuk úgy a feladatot, hogy megfordítás helyett... •
rendezze ıket ABC-szerint növekvı sorrendbe
Sipos Anett Sipos Gergely Sipos Geza Szasz Geza Tal Anett Tal Bela
Pannonhalma Kisvejke Kenez Gulacs Felsodobsza Felsodobsza
9090 7183 9752 4842 3847 3847
06-20-958-2732 06-20-781-2555 06-82-111-289 06-82-217-675 06-82-217-657 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 Domjan David Panyi Peter Majer Marta Kovacs Karoly Kristof Kitti
Csanadpalota Tikos Merenye Hajos Markotabodoge Tyukod
6913 8731 7981 6344 9164 4762
06-84-315-164 06-20-911-2686 06-70-185-3550 06-85-127-305 06-84-180-306 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 Kovesdi Kornel Kajarpec
9125 9123
06-70-151-1180 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 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
... valami szoveg ... <TITLE> ... valami szoveg ... 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
Op.rendszerek gyak hataridok (nappali) Op.rendszerek gyak eredmenyek (nappali) Leiras a rendszer hasznalatahoz
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 $