awk
Obsah
AWK (Text Processing Language)
AWK (pojmenovaný podle autorů Aho, Weinberger, Kernighan) je nástroj pro manipulaci s daty, generování reportů a provádění výpočtů nad textovými soubory. Jeho největší síla spočívá v tom, že automaticky dělí každý řádek na jednotlivá pole (sloupce).
1. Základní princip fungování
AWK čte vstup řádek po řádku a pro každý řádek zkouší aplikovat zadaná pravidla ve formátu:
awk 'vzor { akce }' soubor
Pokud řádek odpovídá vzoru, provede se akce. Pokud vzor chybí, akce se provede pro každý řádek.
2. Práce se sloupci (Fields)
AWK standardně používá jako oddělovač sloupců mezeru nebo tabulátor.
- $0: Celý aktuální řádek.
- $1, $2, $3…: První, druhý, třetí sloupec.
- NF: Počet sloupců na aktuálním řádku (Number of Fields).
- NR: Číslo aktuálního řádku (Number of Records).
Příklad: Výpis konkrétních sloupců
ls -l | awk '{ print $9, $5 }'
- Vypíše název souboru ($9) a jeho velikost ($5) z výstupu příkazu
ls.
3. Pokročilé funkce a výpočty
AWK umí pracovat s proměnnými, podmínkami a cykly, což z něj dělá mocný analytický nástroj.
| Úkol | Příkaz |
|---|---|
| Filtrování | awk '$3 > 500 { print $1 }' data.txt (vypíše 1. sloupec, pokud je ve 3. sloupci hodnota > 500) |
| Sčítání | awk '{ sum += $2 } END { print sum }' soubor (sečte všechny hodnoty v druhém sloupci) |
| Změna oddělovače | awk -F: '{ print $1 }' /etc/passwd (použije dvojtečku jako oddělovač a vypíše uživatelská jména) |
4. Speciální bloky: BEGIN a END
- BEGIN { … }: Provede se jednou před čtením prvního řádku (např. tisk záhlaví).
- END { … }: Provede se jednou po zpracování posledního řádku (např. tisk celkového součtu).
5. Proč používat AWK místo sedu nebo Pythonu?
- Rychlost psaní: Jednoduché analýzy napíšete jako „one-liner“ přímo do terminálu.
- Efektivita: AWK je extrémně rychlé i pro zpracování obřích CSV souborů nebo systémových logů.
- Nativní podpora sloupců: Zatímco v jiných jazycích musíte řádky složitě dělit (split), AWK to dělá automaticky.
Zajímavost: AWK je „datově řízený“ jazyk. To znamená, že nemusíte psát smyčku pro čtení souboru – AWK ji má v sobě zabudovanou a vy jen definujete, co se má stát s daty uvnitř.
awk.txt · Poslední úprava: autor: admin
