Příkaz awk je výkonná metoda pro zpracování nebo analýzu textových souborů - zejména datových souborů, které jsou uspořádány podle řádků (řádků) a sloupců.
Jednoduchý awk příkazy lze spustit z příkazového řádku. Složitější úlohy by měly být psány jako awk programy (tzv. Awk skripty) do souboru.
Základní formát příkazu awk vypadá takto:
awk 'vzor {action}' vstupní soubor 'výstupní soubor
To znamená: v každém řádku vstupního souboru; pokud řádek obsahuje vzorek, použijte akci na řádek a zadejte výslednou linku do výstupního souboru. Pokud je vzorek vynechán, je akce aplikována na všechny řádky. Například: awk '{tisk $ 5}' table1.txt> výstup1.txt Toto prohlášení přijímá prvek 5. sloupce každého řádku a zapíše jej jako řádek do výstupního souboru "output.txt". Proměnná '$ 4' odkazuje na druhý sloupec. Podobně můžete přistupovat k prvnímu, druhému a třetímu sloupci pomocí $ 1, $ 2, $ 3 atd. Ve výchozím sloupci se předpokládá, že jsou odděleny mezerami nebo kartami (tzv. Bílý prostor). Takže pokud vstupní soubor "table1.txt" obsahuje tyto řádky: 1, Justin Timberlake, titul 545, cena 7,30 dolarů2, Taylor Swift, titul 723, cena 7,90 dolarů3, Mick Jagger, Název 610, Cena $ 7.904, Lady Gaga, titul 118, cena 7,30 dolarů5, Johnny Cash, titul 482, cena 6,50 dolarů6, Elvis Presley, titul 335, cena 7,30 dolarů7, John Lennon, titul 271, cena 7,90 dolarů8, Michael Jackson, titul 373, cena 5,50 dolarů Pak by příkaz zapsal do výstupního souboru "output1.txt" následující řádky: 545,723,610,118,482,335,271,373, Pokud je oddělovač sloupců něco jiného než mezery nebo karty, například čárka, můžete zadat v příkazu awk následující: awk -F, '{print $ 3}' tabulka1.txt> výstup1.txt Tím se vybere prvek ze sloupce 3 každého řádku, pokud se sloupce považují za oddělené čárkou. Výstupem by proto v tomto případě bylo: Hlava 545 Název 723 Hlava 610 Hlava 118 Název 482 Hlava 335 Název 271 Hlava 373 Seznam příkazů uvnitř konstantních závor ('{', '}') se nazývá blok. Pokud položíte podmíněný výraz před blok, příkaz uvnitř bloku bude proveden pouze v případě, že je podmínka pravdivá. awk '$ 7 == " $ 7,30" {print $ 3}' tabulka1.txt V tomto případě je podmínka $ 7 == " $ 7.30", což znamená, že prvek ve sloupci 7 se rovná 7,30 USD. Zpětné lomítko před znakem dolaru slouží k tomu, aby systém zabránil interpretaci $ 7 jako proměnné a místo toho vzal znak dolaru doslovně. Takže tento příkaz awk vytiskne prvek ve 3. sloupci každého řádku, který má ve sloupci 7 hodnotu "7,30". Jako podmínku můžete také používat regulární výrazy. Například: awk '/ 30 / {tisk $ 3}' tabulka1.txt Řetězec mezi dvěma lomítky ('/') je regulární výraz. V tomto případě je to pouze řetězec "30." To znamená, že pokud řádek obsahuje řetězec "30", systém vytiskne prvek ve 3. sloupci tohoto řádku. Výstupem ve výše uvedeném příkladu by bylo: Timberlake, Senilní, Presley, Pokud jsou tabulkové prvky čísly awk, mohou se na nich spouštět výpočty, jako v tomto příkladu: awk '{tisk ($ 2 * $ 3) + $ 7} Kromě proměnných, které přistupují k prvkům aktuálního řádku ($ 1, $ 2 atd.), Existuje proměnná $ 0, která se vztahuje k úplnému řádku (řádku) a proměnné NF, která drží počet polí. Také můžete definovat nové proměnné jako v tomto příkladu: awk '{součet = 0; pro (col = 1; col <= NF; col ++) součet + = $ col; tisková suma; } ' To vypočítá a vytiskne součet všech prvků každého řádku. Příkazy Awk jsou často kombinovány se příkazy sed.




