Awk je skriptovací jazyk používaný pro manipulaci s daty a generování sestav.Programovací jazyk příkazu awk nevyžaduje žádné kompilace a umožňuje uživateli používat proměnné, číselné funkce, řetězcové funkce a logické operátory.

Awk je nástroj, který umožňuje programátor psát malé, ale účinné programy v podobě prohlášení, které definují textové vzory, které mají být vyhledávány v každém řádku dokumentu a akce, která má být přijata, pokud je nalezena shoda v rámci linie., Awk se většinou používá pro skenování a zpracování vzorů. Vyhledá jeden nebo více souborů, aby zjistil, zda obsahují řádky, které odpovídají zadaným vzorcům, a poté provede související akce.

Awk je zkrácena ze jmen vývojářů-Aho, Weinberger a Kernighan.

co můžeme dělat s AWK ?

1. AWK Operace:
() Prohledá soubor, řádek po řádku
(b) Rozdělí každý vstupní řádek do pole
(c) Porovnává vstupní řádky/pole vzor
(d) Provádí akce(y) na odpovídající řádky

2., Užitečné pro:
(a) transformovat datové soubory
(b) produkovat formátované zprávy

3. Programovací Konstrukty:
() výstupní Formát řádků
(b) a Aritmetické operace s řetězci
(c) Podmíněné příkazy a smyčky

Syntaxe:

awk options 'selection _criteria {action }' input-file > output-file

Možnosti:

-f program-file : Reads the AWK program source from the file program-file, instead of from the first command line argument.-F fs : Use fs for the input field separator

Ukázkové Příkazy

Příklad:
Zvažte následující textový soubor jako vstupní soubor pro všechny níže uvedené případy.

$cat > employee.txt 
ajay manager account 45000sunil clerk account 25000varun manager sales 50000amit manager account 47000tarun peon sales 15000deepak clerk sales 23000sunil peon sales 13000satvik director purchase 80000 

1. Výchozí chování Awk: ve výchozím nastavení Awk vytiskne každý řádek dat ze zadaného souboru.,

$ awk '{print}' employee.txt

Výstup:

ajay manager account 45000sunil clerk account 25000varun manager sales 50000amit manager account 47000tarun peon sales 15000deepak clerk sales 23000sunil peon sales 13000satvik director purchase 80000 

Ve výše uvedeném příkladu, žádný vzor je uveden. Akce se tedy vztahují na všechny řádky. Action print bez jakéhokoli argumentu ve výchozím nastavení vytiskne celý řádek, takže vytiskne všechny řádky souboru bez selhání.

2. Vytiskněte řádky, které odpovídají danému vzoru.

$ awk '/manager/ {print}' employee.txt 

Výstup:

ajay manager account 45000varun manager sales 50000amit manager account 47000 

Ve výše uvedeném příkladu, awk příkaz vytiskne všechny čáry, který se shoduje s „manažerem“.

3., Rozdělení řádku do polí : pro každý záznam, tj. řádek, příkaz awk rozdělí záznam vymezený znakem mezery ve výchozím nastavení a uloží jej do proměnných $n. Pokud má řádek 4 slova, bude uložen v $1, $2, $3 a $4. Také $ 0 představuje celou řadu.

$ awk '{print $1,$4}' employee.txt 

Výstup:

ajay 45000sunil 25000varun 50000amit 47000tarun 15000deepak 23000sunil 13000satvik 80000 

Ve výše uvedeném příkladu, $1 a $4 představuje Jméno a Plat polí, resp.,

Postaven V Proměnné V Awk

Awk vestavěné proměnné obsahovat pole proměnné—$1, $2, $3, a tak dále ($0 je celá linka) — to zlomit řádek textu na jednotlivá slova nebo části nazývá pole.

Nr: příkaz NR udržuje aktuální počet vstupních záznamů. Nezapomeňte, že záznamy jsou obvykle řádky. Příkaz Awk provede příkazy Vzor / Akce jednou pro každý záznam v souboru.

NF: příkaz NF udržuje počet polí v aktuálním vstupním záznamu.,

FS: příkaz FS obsahuje znak oddělovače polí, který se používá k rozdělení polí na vstupní řádek. Výchozí hodnota je „bílý prostor“, což znamená mezery a znaky na kartě. FS může být přeřazen na jiný znak (typicky v BEGIN) pro změnu oddělovače polí.

RS: příkaz RS ukládá aktuální znak oddělovače záznamů. Protože ve výchozím nastavení je vstupní řádek vstupní záznam, výchozí znak oddělovače záznamů je nový řádek.

OFS: příkaz OFS ukládá oddělovač výstupního pole, který odděluje pole, když je Awk vytiskne. Výchozí je prázdné místo., Kdykoli má tisk několik parametrů oddělených čárkami, vytiskne hodnotu OFS mezi jednotlivými parametry.

ORS: příkaz ORS ukládá oddělovač výstupních záznamů, který odděluje výstupní čáry, když je Awk vytiskne. Výchozí je znak newline. tisk automaticky vydává obsah ORS na konci toho, co je dáno k tisku.,

Příklady:

Použití NR vestavěné proměnné (Displej Linka Číslo)

$ awk '{print NR,$0}' employee.txt 

Výstup:

1 ajay manager account 450002 sunil clerk account 250003 varun manager sales 500004 amit manager account 470005 tarun peon sales 150006 deepak clerk sales 230007 sunil peon sales 130008 satvik director purchase 80000 

Ve výše uvedeném příkladu, awk příkaz s NR vypíše všechny řádky, spolu s číslem linky.

Použití NF vestavěné proměnné (Zobrazení Poslední Pole)

$ awk '{print $1,$NF}' employee.txt 

Výstup:

ajay 45000sunil 25000varun 50000amit 47000tarun 15000deepak 23000sunil 13000satvik 80000 

V příkladu výše $1 představuje Jméno a $NF představuje Plat. Můžeme získat plat pomocí $ NF, kde $ NF představuje poslední pole.,

Další použití NR vestavěné proměnné (Řádek Displeje 3-6)

$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt 

Výstup:

3 varun manager sales 500004 amit manager account 470005 tarun peon sales 150006 deepak clerk sales 23000 

Další Příklady

Pro daný textový soubor:

$cat > geeksforgeeks.txtA B CTarun A12 1Man B6 2Praveen M42 3

1) tisk první položku v řádku číslo(NR), oddělené “ – “ z každého řádku v geeksforgeeks.txt:

$ awk '{print NR "- " $1 }' geeksforgeeks.txt
1 - Tarun2 – Manav 3 - Praveen

2), pro návrat Do druhého řádku/položky z geeksforgeeks.,est řádek v souboru:

$ awk '{ if (length($0) > max) max = length($0) } END { print max }' geeksforgeeks.txt
13

5) počet řádků v souboru:

$ awk 'END { print NR }' geeksforgeeks.txt
3

6) Tisk čar s více než 10 znaků:

$ awk 'length($0) > 10' geeksforgeeks.txt
Tarun A12 1Praveen M42 3

7) najít/zkontrolujte, zda pro libovolný řetězec v nějaké konkrétní sloupec:

$ awk '{ if($3 == "B6") print $0;}' geeksforgeeks.txt

8) tisk čtverců prvního čísla od 1 do n 6:

$ awk 'BEGIN { for(i=1;i<=6;i++) print "square of", i, "is",i*i; }'
square of 1 is 1square of 2 is 4square of 3 is 9square of 4 is 16square of 5 is 25square of 6 is 36

Tento článek je přispěl Anshika Goyal a Praveen Negi., Pokud se vám líbí GeeksforGeeks a chtěli byste přispět, můžete také napsat článek pomocí contribute.geeksforgeeks.org nebo napište svůj článek na [email protected]. Viz váš článek se objeví na GeeksforGeeks hlavní stránce a pomoci jiných Mágů.

Articles

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *