C2110 Operační systém UNIX a základy programování 12. lekce -1C2110 Operační systém UNIX a základy programování Petr Kulhánek kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Přírodovědecká fakulta Masarykova univerzita, Kamenice 5, CZ-62500 Brno 12. lekce PS/2021 Prezenční forma výuky: Rev4 C2110 Operační systém UNIX a základy programování 12. lekce -2- AWK http://www.gnu.org/software/gawk/gawk.html AWK je skriptovací jazyk navržený pro zpracovávání textových dat, ať už v podobě textových souborů nebo proudů. Jazyk využívá řetězcové datové typy, asociativní pole (pole indexovaná řetězcovými klíči) a regulární výrazy. adaptováno z www.wikipedia.org C2110 Operační systém UNIX a základy programování 12. lekce -3Shrnutí L11 C2110 Operační systém UNIX a základy programování 12. lekce -4Průběh vykonávání skriptu nový soubor ? ano ne parsuj záznam (rozděl na slova) vykonej blok inicializace Z BEGIN { } { } /VZOR/ { } END { } 1 2 3 4 finalizace nový záznam (řádek)? ne ano vykonej blok vyhovuje záznam VZORu? ano ne K uživatelský skriptlogika interpretru AWK proměnné jsou globální (pokud není určeno jinak) C2110 Operační systém UNIX a základy programování 12. lekce -5Spouštění AWK skriptů Zpracování textového souboru: $ awk –f script.awk vstup1.txt vstup2.txt $ awk –f script.awk < vstup.txt $ cat soubor.txt | awk –f script.awk awk skript analyzované textové soubory výsledek je tištěn na obrazovku Analyzovaná data lze zaslat přes standardní vstup: interpretr jazyka Nepřímé spouštění: C2110 Operační systém UNIX a základy programování 12. lekce -6- Proměnné Speciální proměnné: NF počet polí v aktuálně prováděném záznamu (Number of Fields) NR pořadí prováděného záznamu (Number of Records) $0 celý záznam $1, $2, $3 ... jednotlivé pole záznamu Hodnota proměnné: print A + C; print B; Přiřazení do proměnné: A = 10; B = "toto je text" C = 10.4567; D = A + C; znak $ umožňuje programový přístup k jednotlivým polím záznamu Příklad: for(i=1; i <= NF; i++){ sum += $i; } C2110 Operační systém UNIX a základy programování 12. lekce -7Nová látka C2110 Operační systém UNIX a základy programování 12. lekce -8- Obsah ➢ AWK (Modul 1) • Podmínky, logické operace • Řízení běhu (next, exit) ➢ AWK (Modul 2) • Cykly • Pole