Úvod do awk
AWK je populární jazyk v systémech UNIX a Linux. Název dostal od autorů: Alfreda Aho, Petera Weinbergera a Briana Kernighana. Příkaz awk umožňuje přístup k programovacímu jazyku AWK, který je určen ke zpracování dat v textových proudech.
Populární pro skenování vzorů a zjednodušení složitých operací, awk vám pomůže psát efektivní příkazy pro definování textových vzorů v souboru. Příkaz awk poté zpracuje tyto příkazy čtením po jednom řádku a provede akci na základě dané podmínky.
Jednoduše řečeno, awk vyhledá a nahradí text a pomůže seřadit, ověřit nebo indexovat zadaná data.
Vlastnosti AWK
awk přichází se spoustou jedinečných funkcí:
- V awk není nutná žádná kompilace
- Často se používá pro extrakci dat
- Běžně se používá k provádění manipulace s textem
- Pomáhá generovat výsledky podle potřeby.
Nyní prozkoumáme sílu příkazů awk.
15 Zajímavé příkazy awk
Zde je kompilovaný seznam několika zajímavých příkazů awk:
- Tisk náhodných čísel v sadě - Předpokládejme, že chcete vytisknout několik náhodných čísel z vybraného fondu. Můžete určit množství náhodných čísel z tohoto fondu a požádat awk o jeho vytištění. Zde je příklad: vytiskneme 10 čísel od 0 do 1000. Příkaz awk pro toto tedy bude následující: awk 'BEGIN for (i = 1; i <= 10; i++)
print int (1001 * rand ()) '
- Hledání foo nebo baru - Co když chcete napsat řádek, ve kterém chcete provést jednoduché hledání foo nebo baru? Zde je příkaz, který vám umožní právě toto: if (/ foo / || / bar /)
tisk "Nalezeno!"
- Přeskupení pole - Pokud chcete vytisknout konkrétní pole v konkrétní objednávce, awk to udělá za vás. Předpokládejme, že chcete vytisknout prvních 5 polí konkrétní sady v jednom poli na řádek, můžete použít následující příkaz: awk 'i = 1
zatímco já <= 3)
vytisknout $ i
i++
' vložte soubor
- Rozdělení čáry - V jakékoli dané sadě souborů může awk pomoci rozdělit řádek na pole, kde x je název pole: $ awk 'print $ x, $ x' xyz.txt
- Spouštění několika příkazů najednou - Chcete-li spustit několik příkazů najednou, můžete k zadání obou příkazů použít středník: $ echo "Dobré ráno! Jack "| awk '$ 2 =" Jill "; tisknout $ 0'
- Provádění awk skriptu - Chcete-li spustit skript awk z konkrétního souboru, můžete vytvořit soubor sum_column a vložit do něj následující skript: #!/ usr / bin / awk -f
ZAČNĚTE součet = 0
součet = součet + $ x
END print sumVe výše uvedeném skriptu se x rovná sloupci, který musíte zadat do souboru. Po úspěšném dokončení tohoto úkolu můžete pomocí následujícího příkazu zobrazit součet sloupce x ve vstupním souboru:
awk -f sum_column input_file.
- Pomocí -f - Při kódování se může často zdát nepraktické odkazovat na terminál. awk používá -f k provedení vyhledávání ze skriptu file: awk -f.awk vstupní soubor
- Provádění matematických funkcí - Můžete také použít awk pro jednoduché matematické funkce: awk 'sum = $ 2 + $ 3 + $ 4; avg = součet / 3
> vytisknout známky 1 $, průměr '
- Hello World v awk - Jednoduchý Hello World můžete vytisknout v awk pomocí následujícího příkazu: awk „BEGIN print“ Hello World!!„“
Můžete také vytvořit program Hello World. Následující kód nejen vytiskne všudypřítomnou ahoj zprávu, ale také vygeneruje informace v záhlaví:
$ awk 'BEGIN print "Hello World!" '
- Tisk celkového počtu bytů - Celkový počet bajtů použitých soubory můžete zjistit pomocí následujícího příkazu: ls -l . | awk 'x + = $ 5; KONEC \
print "total bytes:" x '
celkem bajtů: 7449362
- Anonymizace protokolu Apache - K anonymizaci protokolu Apache můžete použít následující kód: cat apache-anon-noadmin.přihlásit | \
awk 'funkce ri (n) \
Return int (n * rand ()); \
BEGIN srand (); Pokud (! \
(5 $ v jacku)) \
jack [$ 5] = sprintf ("% d.% d.% d.% d ", \
ri (255), ri (255) \
, ri (255), ri (255)); \
$ 5 = jack [$ 5]; tisk __g5_token5b610ba53dbe4 '
- Provoz v řadách - Pokud máte adresu, kterou chcete řadit do řádků, můžete tak učinit pomocí následujícího příkazu: BEGIN RS = ""; FS = "\ n"
tisk "Název je:", $ 1
tisk "Adresa je:", 2 $
tisk "Město a stát jsou:", 3 $
tisk ""
- Pomocí smyčky while - Smyčka while pokračuje v provádění akce, která mu byla dána, v opakovaném procesu, dokud podmínka není pravdivá. Například pro tisk čísel od 1 do 100 můžete použít následující kód: awk 'BEGIN i = 1; zatímco já < 100) print i; ++i '
- Pomocí smyčky do-while - V této smyčce se podmínka provede na konci smyčky, i když je příkaz nepravdivý. Například pro tisk čísel od 1 do 100 pomocí smyčky do-while můžete použít následující kód: awk 'BEGIN i = 1; do print i; ++ i while (i < 100) '
- Pomocí ZAČÁTKU a KONEC - Klíčové slovo BEGIN se používá k vytvoření záhlaví pro zpracování vašeho záznamu: $ awk 'BEGIN print "XXX"
Stejným způsobem se po zpracování dat použije klíčové slovo END:
END print "Zápatí souboru" '
Tím končí seznam 15 zajímavých příkazů awk. Můžete je vyzkoušet a zobrazit výsledky. Doufám, že vám to bude užitečné. Pokud vás tento článek zaujal, můžete si prohlédnout Mastering Linux Shell Scripting - druhé vydání. V této knize najdete vše, co potřebujete vědět, abyste zvládli skriptování prostředí a mohli se informovaně rozhodovat o prvcích, které používáte.