A | B | C | D | E | F | G | H | CH | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
AWK
je univerzální počítačový jazyk, navržený pro zpracovávání textových dat, ať už v podobě textových souborů nebo proudů. Název AWK je odvozen z příjmení svých tvůrců, kterými jsou Alfred V. Aho, Peter J. Weinberger a Brian W. Kernighan.
AWK je příkladem jazyka, který značně využívá řetězcové datové typy, asociativní pole (tj. pole indexovaná řetězcovými klíči) a regulární výrazy. Síla, stručnost a omezení programů v AWK a skriptů v sedu inspirovaly Larryho Walla k vytvoření jazyka Perl.
AWK je jedním z prvních nástrojů v UNIXu verze 7 a popularitu si získal tím, že umožnil přidat aritmetické schopnosti UNIXové rouře. AWK je standardní součástí téměř každého dnešního operačního systému unixového typu. Implementace AWK jsou jako instalovaný software dostupné také pro většinu dalších operačních systémů.
Struktura programů v AWK
Obecně vzato jsou programu awk předány dva druhy dat: příkazový soubor a primární vstupní soubor. Příkazový soubor (kterým může být buď skutečný soubor, nebo jej lze zadat přímo na příkazovém řádku) obsahuje sérii příkazů, které awk říkají, jak má být vstupní soubor zpracován. Primární vstupní soubor je obvykle nějakým způsobem naformátovaný text a může jím být buď existující soubor, nebo jej AWK čte ze standardního vstupu. Typický program v AWK sestává z posloupnosti řádků ve tvaru:
/vzor/ { akce }
…kde vzor je regulární výraz a akce zastupuje příkaz(y). AWK prochází vstupní soubor. Najde-li řádek vyhovující vzoru, provede příkaz(y) uvedené v akci. Dalšími možnostmi jsou:
- BEGIN { akce }
- Provede příkazy akce na začátku běhu skriptu ještě před tím, než jsou zpracována vstupní data.
- END { akce }
- Podobně jako v předchozím případě, ale akce se provede až na konci běhu skriptu.
- /vzor/
- Vypíše všechny řádky vyhovující vzoru.
- { akce }
- Provede akci pro každý vstupní řádek.
Každý z těchto zápisů může být v příkazovém souboru použit i víckrát. Řádky jsou v příkazovém souboru zpracovávány postupně, takže existují-li dvě konstrukce BEGIN, provede se nejprve první, poté druhá a pak se teprve provedou ostatní řádky. BEGIN a END nemusí být umístěny před a za ostatními řádky příkazového souboru.
Příkazy AWK
Příkazy AWK se umisťují namísto akce v předchozích příkladech. Příkazy AWK zahrnují volání funkcí, přiřazování do proměnných, provádění výpočtů či libovolnou kombinaci z nich. Podporuje mnoho vestavěných funkcí a mnoho dalších je k dispozici v nejrůznějších odrůdách. Některé verze AWK podporují dynamicky linkované knihovny, poskytující mnoho dalších funkcí.
Pro stručnost jsou v následujících příkladech vynechány složené závorky ({}).
Příkaz print
Příkaz print slouží k vypsání textu. Nejjednodušší formou příkazu je:
Toto zapříčiní vypsání zpracovávaného řádku. V AWK jsou řádky rozděleny na jednotlivá pole (sloupce), tyto je možno vypisovat zvlášť:
- print $1
- Vypíše první pole (sloupec) zpracovávaného řádku.
- print $1, $3
- Vypíše první a třetí sloupec zpracovávaného řádku. Jako oddělovač je použit předdefinovaný řetězec zvaný output field separátor (oddělovač výstupního pole) (OFS), jehož implicitní hodnotou je znak jedné mezery.
Ačkoli tato pole ($X) mohou vypadat jako proměnné (v Perlu označuje symbol $ proměnné), ve skutečnosti se odkazují na pole zpracovávaného řádku. Zvláštním případem je $0 označující celý řádek. Ve skutečnosti jsou příkazy „print
“ a „print $0
“ svou funkcí identické.
Příkaz print může zobrazit také výsledek výpočtů nebo volání funkce:
print 3+2 print foobar(3) print foobar(proměnná) print sin(3-2)
Výstup lze přesměrovat do souboru:
print "výraz" > "název souboru"
Interní proměnné
AWK má interní proměnné, které mají speciální význam:
FS – Field Separator : Oddělovač polí v záznamu (Výchozí je mezera, tabulátor.)
RS – Record Separator : Oddělovač záznamů (Výchozí je znak nové řádky '\n'.)
NF – Number of Fields : Počet polí v aktuálně prováděném záznamu
NR – Number of Records : Pořadí prováděného záznamu
Proměnné atd.
Názvy proměnných lze sestavit ze znaků s výjimkou klíčových slov jazyka. Operátory + − * / označují (v pořadí) součet, rozdíl, součin a podíl. Pro spojování řetězců se jednoduše umístí dvě proměnné (nebo řetězcové konstanty) vedle sebe, volitelně s mezerou mezi nimi. Řetězcové konstanty jsou ohraničeny uvozovkami. Příkazy nemusí být ukončeny středníky. A konečně, komentáře lze do programu vložit pomocí znaku # na začátku řádku.
Uživatelsky definované funkce
Podobně jako v jazyku C je deklarace funkce složena z názvu funkce a jejích argumentů:
function pricti_tri (cislo ,temp) { temp = cislo + 3 return temp }
Funkci pak lze zavolat následovně:
print pricti_tri(36) # vypise 39
Funkce může obsahovat lokální proměnné. Jejich názvy jsou pak uvedeny na konci seznamu argumentů, ačkoli jejich hodnoty by měly být při volání funkce vynechány. Konvencí je přidat před lokální proměnné nějaké bílé znaky, aby bylo zřejmé, kde končí parametry a začínají lokální proměnné.
Ukázkové programy
Zde je tradiční program Hello world, napsaný v AWK:
BEGIN { print "Hello, world!" }
Následující program vypíše všechny řádky delší 80 znaků. Povšimněte si, že výchozí akcí je vypsání aktuálního řádku.
length > 80
Spočítání řádků, slov a znaků:
{ w += NF; c += length} END { print NR, w, c }
Součet prvního sloupce ze vstupu:
{ s += $1 } END { print s }
Četnost výskytu slov (s využitím asociativních polí):
{ for (i=1; i<=NF; i++) words++ } END { for (i in words) print i, words }
Verze a implementace AWK
Původní jazyk AWK vznikl v roce 1977 a byl distribuován s Unixem verze 7.
V roce 1985 jej začali jeho autoři rozšiřovat, nejvýznamnější změnou bylo přidání uživatelsky definovaných funkcí. Jazyk je popsán v knize The AWK Programming Language, vydané v roce 1988 a jeho implementace byla dostupná v UNIX System V. Aby se zabránilo zmatkům s nekompatibilitou se starší verzí, byla tato verze občas označována jako „new awk“ (nová awk) nebo nawk. Tato implementace byla v roce 1996 uveřejněna pod licencí svobodného software a dodnes je spravována Brianem Kernighanem.
GNU awk, neboli gawk, je další svobodnou implementací. Vznikl před tím, než byla svobodně dostupná originální implementace a dodnes je široce používán.
mawk je velmi rychlá implementace Mika Brennana, založená na interpretru byte kódu.
Literatura
- awk & sed: Příručka pro dávkové zpracování textu, Helmut Herold Archivováno 8. 3. 2006 na Wayback Machine., Computer Press, ISBN 80-251-0309-9, 2004
- Programovací jazyk textových manipulací: awk – dobrý český webový AWK tutoriál Archivováno 28. 6. 2006 na Wayback Machine.
- Hubičkova školička: AWK
Externí odkazy
- Obrázky, zvuky či videa k tématu AWK na Wikimedia Commons
- Kniha Awk ve Wikiknihách
- comp.lang.awk je diskusní skupina na USENETu, zaměřená na awk.
- Domovská stránka GAWK (GNU Awk)
- Stránka umožňující stažení mawk
- Unixové nástroje – 21 (awk)
Text je dostupný za podmienok Creative Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších podmienok. Podrobnejšie informácie nájdete na stránke Podmienky použitia.
Antény
Chemické zdroje elektriny
Chladenie v elektrotechnike
Elektrická sústava automobilu
Elektrická trakcia
Elektrické prístroje
Elektrické súčiastky
Elektrické spotrebiče
Elektrické stroje
Čítanie (elektrotechnika)
Činný výkon
Štatistická dynamika
Živý vodič
Admitancia
Antiparalelné zapojenie
Asynchrónny motor
Blúdivý prúd
Bočník (elektrotechnika)
Diak (polovodičový prvok)
Displej s kvapalnými kryštálmi
Elektrická inštalácia
Elektrická rezonancia
Elektrická sila
Elektrická vodivosť
Elektrické zariadenie
Elektrický obvod
Elektrický zvonec
Elektroenergetika
Elektromer
Elektrometer
Elektromobil
Elektromotor
Elektromotorické napätie
Elektrotechnický náučný slovník
Elektrotechnika
Elektrotechnológia
Fázor
Faradayova klietka
Frekvencia (fyzika)
Graetzov mostík
Impedancia
Indukčnosť
Induktancia
Istič
Izolácia (elektrotechnika)
Izolant
Jadro vodiča
Jednobran
Jednosmerný prúd
Joulovo teplo
Katóda
Koaxiálny kábel
Kompenzácia účinníka
Konduktometria
Konektor (elektrotechnika)
Korónový výboj
Lanko (elektrotechnika)
Leptanie
Logické hradlo
Magnetická susceptibilita
Magnetizácia (veličina)
Merný elektrický odpor
Mobilné zariadenie
Napájací zdroj
Napäťový chránič
Napäťový násobič
Nortonova veta
Odpínač
Odpojovač
OLED
Olovený akumulátor
Paralelné zapojenie
Peltierov článok
Plošná hustota elektrického prúdu
Poistka (elektrotechnika)
Posuvný prúd
Prúdový chránič
Prenosové médium
Prieletový klystrón
Primárny elektrochemický článok
Reaktancia
Rekuperácia (dopravný prostriedok)
Relé
Reproduktorová výhybka
Rezistancia
Rozhranie (interface)
Sériové zapojenie
Seebeckov jav
Sekundárny elektrochemický článok
Settopbox
Skrat
Sonar
Spínač
Spínaný zdroj
Straty v mikropásikových vedeniach
Striedavý prúd
Stupeň ochrany krytom
Svetelná výbojka
Symetrizačný člen
Technická normalizácia
Tepelné relé
Tepelne vodivostný detektor
Termočlánok
Théveninova veta
Transformátor
Transformátor s fázovou reguláciou
Trojfázová sústava
Tuhá fáza (elektronika)
Tyratrón
Usmerňovač (elektrotechnika)
Uzemnenie
Uzol (vodiče)
Vírivý prúd
Výbojka
Varistor
Ventilátor
Vodič (elektrotechnika)
Voltov stĺp
Vstavaný systém
Zásuvka (elektrotechnika)
Zdroj (elektrotechnika)
Zisk antény
Text je dostupný za podmienok Creative
Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších
podmienok.
Podrobnejšie informácie nájdete na stránke Podmienky
použitia.
www.astronomia.sk | www.biologia.sk | www.botanika.sk | www.dejiny.sk | www.economy.sk | www.elektrotechnika.sk | www.estetika.sk | www.farmakologia.sk | www.filozofia.sk | Fyzika | www.futurologia.sk | www.genetika.sk | www.chemia.sk | www.lingvistika.sk | www.politologia.sk | www.psychologia.sk | www.sexuologia.sk | www.sociologia.sk | www.veda.sk I www.zoologia.sk