C2110 Operační systém UNIX a základy programování 12. lekce Petr Kulhánek, Jakub Štěpán kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Přírodovědecká fakulta Masarykova univerzita, Kotlářská 2, CZ-61137 Brno TER5TVO ŠKOLSTVÍ. OP VM«l«v«ni h^i^rť *v™PskV 1VI | t_l i IMI | ^iiti-i ^^^"^^^^ MINISTERSTVO ŠKOLSTVÍ. OP VnhUnrí - **mJr ■ lOnd V C R EVROPSKÁ UNIE u lAdEÍ E a tělovýchovy m kenkjwictichtixitirt 'i n a INVhSl iCb DO ROZVOJh VZDĚLÁVÁNÍ perační systém UNIX a základy programování 12. lekce Obsah > AWK • Analýza textových souborů • Regulární výrazy • Pole perační systém UNIX a základy programování 12. lekce -2- Průběh vykonávání skriptu o o BEGIN { } { } /VZOR/ { } END { } • Blok BEGIN (1) se vykoná (pokud je ve skriptu obsažen) před analýzou souboru. • Načte se záznam ze souboru. Ve výchozím nastavení je záznamem celý řádek analyzovaného souboru nebo proudu. Záznam se rozdělí na pole. Ve výchozím nastavení jsou pole jednotlivá slova v záznamu. • Pro daný záznam se vykoná blok (2). • Pokud záznamu vyhovuje VZOR, vykoná se blok (3). • .... vykonají se případně další bloky .... • Blok END (4) se vykoná (pokud je ve skriptu obsažen) po analýze celého souboru. Blok je uzavřen do složených závorek {}. Výše uvedené programové bloky jsou volitelné. Ve výchozím nastavení je záznamem řádek souboru. perační systém UNIX a základy programování 12. lekce Regulární výrazy /VZOR/ { Pokud záznamu vyhovuje VZOR, tak se blok vykoná. Vzor je regulární výraz. Regulární výraz je jazyk, který popisuje strukturu textového řetězce. Jazyk se využívá k vyhledávání textových řetězců, k nahrazování části řetězců. Příklady jednoduchých regulárních výrazů: TEXT - je splněno, pokud je v daném záznamu obsažen TEXT (může být kdekoliv) ATEXT - je splněno, pokud je v daném záznamu obsažen TEXT na začátku TEXT$ - je splněno, pokud je v daném záznamu obsažen TEXT na konci perační systém UNIX a základy programování 12. lekce Cvičení 1. Ze souboru rst.out vyextrahujte průběh teploty na čase. Průběh zobrazte v gnuplotu. 1.000 TEMP(K) NSTEP = 1000 TIME(PS) = Etot = 907.8481 EKtot = 160.3711 BOND = 40.6154 ANGLE = 273.9238 1-4 NB = 14.6900 1-4 EEL = 973.2602 EELEC = -488.9232 EGB = -163.0629 EAMBER (non-restraint) = 747.0977 305.69 EPtot DIHED VDWAALS RESTRAINT PRESS 0.0 747 . 4770 164 . 5827 -67.6091 0.3793 2. Ze souboru rst.out vyextrahujte průběh celkové energie (Etot), kinetické energie (EKtot) a potenciální energie (EPtot) na čase. Průběh jednotlivých energií zobrazte v gnuplotu. Ověřte, že součet potenciální a kinetické energie se rovná celkové energii. perační systém UNIX a základy programování 12. lekce Pole AWK používá asociativní pole. Pole má název, k prvkům pole se přistupuje pomocí klíče. Klíč může mít libovolnou hodnotu a typ. Klíčem může být hodnota proměnné. Přiřazeni hodnoty: moje pole[klic] = hodnota; Ziskáni hodnoty: hodnota = moje pole[klic]; Přiklady: i = 5; moje_pole[i] = 15; print moje pole[i]; a = "slovo"; moje pole[a] = "hodnota"; print moje pole["slovo"], moje pole [5]; perační systém UNIX a základy programování 12. lekce Pole, Procházení seznamu klíčů: for( proměnna in pole) { print pole[proměnna]; } Vykoná tělo cyklu pro každý klíč, který byl použit pro uložení hodnoty do pole. Hodnota klíče je uložena do proměnné . Mazání záznamu s klíčem: delete polefklic]; perační systém UNIX a základy programování 12. lekce Cvičení 1. Ze souboru rst.out vyextrahujte průběh teploty v čase. Výsledný soubor nebude obsahovat dvě poslední hodnoty, které jsou průměrnou hodnotou a její fluktuací. Průběh zobrazte v gnuplotu. 2. Ze souboru rst.out vyextrahujte průběh teploty a spočítejte její průměrnou hodnotu. Vypočtenou hodnotu srovnejte s průměrnou hodnotou uvedenou v souboru rst.out. Proč se hodnoty liší? perační systém UNIX a základy programování 12. lekce