C2110 Operační systém UNIX a základy programování 11. lekce / modul 2 -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 PS/2021 Prezenční forma výuky: Rev7 11. lekce / modul 2 C2110 Operační systém UNIX a základy programování 11. lekce / modul 2 -2- Obsah ➢ AWK • Proměnné, operace s proměnnými • Formátovaný a neformátovaný výstup C2110 Operační systém UNIX a základy programování 11. lekce / modul 2 -3- 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) FS oddělovač polí v záznamu (Field Separator), výchozí je mezera a tabulátor RS oddělovač záznamů (Record Separator) , výchozí je znak nové řádky \n $0 celý záznam $1, $2, $3 ... jednotlivé pole záznamu Hodnota proměnné: print A + C; print B; Rozdíly vůči jazyku BASH A=5 echo $A nesmí obsahovat mezery hodnota proměnné pomocí $ Přiřazení do proměnné: A = 10; B = "toto je text" C = 10.4567; D = A + C; C2110 Operační systém UNIX a základy programování 11. lekce / modul 2 -4Proměnné, ... $0 celý záznam $1, $2, $3 ... jednotlivé pole záznamu znak $ umožňuje programový přístup k jednotlivým polím záznamu Příklad: i=3; print $i; vytiskne hodnotu pole určeného hodnotou proměnné i C2110 Operační systém UNIX a základy programování 11. lekce / modul 2 -5Matematické operace Pokud lze proměnnou interpretovat jako číslo, lze použít následující aritmetické operátory: ++ hodnotu proměnné zvýší o jedničku A++; -- hodnotu proměnné sníží o jedničku A--; + sečte dvě hodnoty A = 5 + 6; A = A + 1; - odečte dvě hodnoty A = 5 – 6; A = A – 1; * vynásobí dvě hodnoty A = 5 * 6; A = A * 1; / vydělí dvě hodnoty A = 5 / 6; A = A / 1; += k proměnné přičte hodnotu A += 3; A += B; -= od proměnné odečte hodnotu A -= 3; A -= B; *= proměnnou vynásobí hodnotou A *= 3; A *= B; /= proměnnou podělí hodnotou A /= 3; A /= B; C2110 Operační systém UNIX a základy programování 11. lekce / modul 2 -6Příkaz print Příkaz print slouží k neformátovanému vypisování řetězců a čísel. Syntaxe: print hodnota1[,] hodnota2[,] ...; Příklady: i = 5; k = 10.456; j = "hodnota promenne i ="; print j, i; print "hodnota promenne k =", k; pokud jsou hodnoty oddělené čárkou, ve výstupu se hodnoty oddělí mezerou C2110 Operační systém UNIX a základy programování 11. lekce / modul 2 -7Funkce printf Syntaxe: printf("format", hodnota1, hodnota2, ...); "Cislo %5d ma hodnotu %03d" do tohoto místa vlož hodnotu1 v daném formátu Funkce printf slouží k vypisování formátovaných textů a čísel. do tohoto místa vlož hodnotu2 v daném formátu Rozdíl vůči jazyku BASH: printf [format] [hodnota1] [hodnota2] ... argumenty příkazu se oddělují mezerou příkaz C2110 Operační systém UNIX a základy programování 11. lekce / modul 2 -8Cvičení 1 1. Napište skript, který sečte čísla v druhém sloupci souboru matice.txt. 2. Napište skript, který vytiskne počet řádků, které obsahuje soubor matice.txt. Výsledek ověřte pomocí příkazu wc.