Awk: Porovnání verzí

Smazaný obsah Přidaný obsah
oprava kódu
m Robot: kosmetické úpravy
Řádek 1:
'''awk''' je nástroj navržený pro zpracování textových dat, načítaných ze souboru nebo přímo z datového proudu. Jeho název vychází z počátečních iniciál příjmení autorů původní verze - Alfreda V. '''A'''ho, Petra J. '''W'''einbergera a [[w:Brian Kernighan|Briana W. '''K'''ernighana]].
 
Awk, to je zároveň programovací jazyk, který pracuje s řetězci, asociativními poli (kde jsou jednotlivé položky pole indexovány řetězci) a regulárními výrazy.
 
Awk je jedním z nejstarších unixových nástrojů, zvláště mocným ve spojení s rourami, který se dodnes používá ve všech moderních operačních systémech, vycházejících z Unixu. Nejde však o původní awk, ale jeho klony (i když s původní aplikací se můžete setkat také). Vlastní příkaz awk je tak většinou pouze symbolickým odkazem.
Řádek 51:
;Slovy: ''Najdeš-li na řádku řetězec "vzorek", tak pošli na výstup první položku řádku, dále zkontroluj není-li někde na řádku také řetězec "jiny_vzorek", pokud ano, tak pošli na výstup druhou položku řádku. Není-li na řádku žádný z těchto vzorků, tak pokračuj dalším řádkem''
 
Jelikož je řetězec "vzorek" obsažen i v druhém hledaném řetězci "jiny_vzorek", budou postupně za sebou posílány na výstup obsahy první i druhé položky řádku obsahujícího řetězec "jiny_vzorek"
 
= Jak se awk implicitně dívá na soubor =
 
<pre>
Řádek 63:
Tak tohle je obsah souboru <code>soubor_dat.txt</code>. Awk při jeho zpracování dělí proud znaků do ''záznamů (record)'' a ty do jednotlivých ''položek (fields)''. Jelikož je implicitním oddělovačem záznamů konec řádku, odpovídá zpravidla i obsah záznamu, který zpracovává awk obsahu jednoho řádku. Implicitním oddělovačem položek je ''bílý znak (mezera nebo tabulátor)''
 
Oddělovače jsou uloženy v proměnných '''RS''' (oddělovač záznamů) a '''FS''' (oddělovač položek) a změnou obsahu těchto proměnných lze přetypovat i implicitní nastavení. Oddělovač položek lze přetypovat i přímo při spuštění awk volbou '''-F''' následovanou novým oddělovačem, který může být tvořen i víceznakovým řetězcem, nebo regulárním výrazem (nezapomeňte však, že je nutno ošetřit znaky které by mohl shell nějakým způsobem interpretovat).
 
Číslo aktuálně zpracovávaného záznamu (zpravidla řádku) je uloženo v proměnné '''NR''' a počet položek (sloupců) zase v proměnné '''NF'''. Při zpracovávání obsahu řádku se na jednotlivé položky odkazujeme jejich pořadovým číslem ( $1 - první sloupec, $2 - druhý sloupec,.. pozn: položka $0 obsahuje celý řádek)
 
;Příklad: