Zkouška 2.6.2017

Seznámení se základními principy operačního systému UNIX, převážně z uživatelského hlediska. Absolvent kurzu by měl být schopen napsat netriviální program v shellu.
KofiAddict
Matfyz(ák|ačka) level I
Příspěvky: 1
Registrován: 3. 6. 2017 13:41
Typ studia: Informatika Bc.

Zkouška 2.6.2017

Příspěvek od KofiAddict »

Zadání Unix 2.6. 2017

Mějme adresář, v něm soubory:
rfc-index.txt
loc-index.txt
rfc[cislo].txt kde misto [cislo] je číslo rfc dokumentu

loc i rfc-index mají v sobě záznamy ve formátu

XXXX [text
]+

oddělené prázdnou řádkou.
Navíc v loc jsou rozdělené do sekcí ve formátu

---- [Názevsekce]:

měli jsme vytvořit program AddRFC, který:
bez přepínačů zkontroluje, jestli v loc-index jsou všechny záznamy pro každý rfc dokument v adresáři a jestli nějaký
záznam není navíc, pokud záznam chybí, nabídnout možnost smazat file nebo přidat záznam z rfc-index do sekce, na kterou
se zeptáme uživatele

přepínače:
-s [sekce] která sekce se má kontrolovat
-f [file]+ které fily se mají kontrolovat
-r [cislo|interval,]+ jaké čísla rfc se mají kontrolovat, kde normální čísla jsou oddělené čárkou, a intervaly jsou ve
formátu [cislo]-[cislo]
-n [file] implicitně bez parametru je file loc-index, a kontrola se provádí jen na novějších souborech

kromě toho měl program kontrolovat, jestli každý záznam v loc-index byl stejný, jako jeho protějšek v rfc-index
a upozornit uživatele, pokud nějaké rfc bylo obsoleted

Dobře se to řešilo přes AWK s RS="" a FS="

", když si to člověk celý narval do paměti a pak to znásilnil v ENDovým bloku.

Snad jsem na nic nezapomněl.

Výsledky:
ze 17 lidí
12 prošlo, myslím 5 jedniček, 3 dvojky a 4 trojky
2 šli mluvit
3 poslal domů, že s nimi nemá o čem mluvit a mají za 4
570RM4G3DD0N
Matfyz(ák|ačka) level I
Příspěvky: 1
Registrován: 4. 9. 2016 10:20
Typ studia: Informatika Bc.

Re: Zkouška 2.6.2017

Příspěvek od 570RM4G3DD0N »

KofiAddict píše: Dobře se to řešilo přes AWK s RS="" a FS="

", když si to člověk celý narval do paměti a pak to znásilnil v ENDovým bloku.
Jen bych opravil, že FS má být nastaven na mezeru. Jde o to, že AWK při nastavení RS na prázdný string bere jako record separator posloupnost new-line characterů, což se mimořádně hodí na zpracovaní rfc_index a loc_index. Sám Forst nám i po zadání poradil, abychom si vzpoměli, jak se AWK chová, pokud nastavíme RS na prázdný string.

Forst byl při hodnocení celkem shovívavý, šlo mu spíše o celkovou ideu řešení a schopnost efektivně využít featury shellu/awk, ne o technické detaily a úplnost (snad nikdo to nestihl celý) řešení.

Totéž zadání bylo už dříve, tedy další info lze nalézt http://forum.matfyz.info/viewtopic.php? ... 36&p=26049 a http://forum.matfyz.info/viewtopic.php? ... 881&p=1799
Odpovědět

Zpět na „SWI095 Úvod do UNIXu“