logo

Příkaz AWK v Unixu/Linuxu s příklady

Awk je skriptovací jazyk používaný pro manipulaci s daty a generování sestav. Příkazový programovací jazyk awk nevyžaduje žádnou kompilaci a umožňuje uživateli používat proměnné, numerické funkce, řetězcové funkce a logické operátory.

Awk je nástroj, který umožňuje programátorovi psát malé, ale účinné programy ve formě příkazů, které definují textové vzory, které se mají hledat v každém řádku dokumentu, a akci, která se má provést, když je nalezena shoda v dokumentu. čára. Awk se většinou používá pro skenování a zpracování vzorů. Prohledá jeden nebo více souborů, aby zjistil, zda obsahují řádky, které odpovídají zadaným vzorům, a poté provede související akce.



přidat řetězec

Awk je zkratka ze jmen vývojářů – Aho, Weinberger a Kernighan.

CO MŮŽEME DĚLAT S AWK?

1. Operace AWK:
(a) Prohledá soubor řádek po řádku
(b) Rozdělí každý vstupní řádek na pole
(c) Porovná vstupní řádek/pole se vzorem
(d) Provádí akce na shodných liniích



2. Užitečné pro:
(a) Transformujte datové soubory
(b) Vytvářejte formátované zprávy

3. Programovací konstrukce:
(a) Naformátujte výstupní řádky
(b) Aritmetické a řetězcové operace
(c) Podmínky a smyčky

Syntax:



awk options 'selection _criteria {action }' input-file>výstupní-soubor>

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>zamestnanec.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik 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 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>

Ve výše uvedeném příkladu není uveden žádný vzor. Takže akce jsou použitelné pro všechny řádky. Tisk akce bez jakéhokoli argumentu standardně vytiskne celý řádek, takže vytiskne všechny řádky souboru bez selhání.

2. Vytiskněte čáry, které odpovídají danému vzoru.

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

Výstup:

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

Ve výše uvedeném příkladu příkaz awk vytiskne celý řádek, který se shoduje s ‚manager‘.

3. Rozdělení řádku na pole: Pro každý záznam, tj. řádek, příkaz awk rozdělí záznam standardně oddělený mezerou a uloží jej do proměnných $n. Pokud má řádek 4 slova, bude uložen v pořadí , , a . Také

Awk je skriptovací jazyk používaný pro manipulaci s daty a generování sestav. Příkazový programovací jazyk awk nevyžaduje žádnou kompilaci a umožňuje uživateli používat proměnné, numerické funkce, řetězcové funkce a logické operátory.

Awk je nástroj, který umožňuje programátorovi psát malé, ale účinné programy ve formě příkazů, které definují textové vzory, které se mají hledat v každém řádku dokumentu, a akci, která se má provést, když je nalezena shoda v dokumentu. čára. Awk se většinou používá pro skenování a zpracování vzorů. Prohledá jeden nebo více souborů, aby zjistil, zda obsahují řádky, které odpovídají zadaným vzorům, a poté provede související akce.

Awk je zkratka ze jmen vývojářů – Aho, Weinberger a Kernighan.

CO MŮŽEME DĚLAT S AWK?

1. Operace AWK:
(a) Prohledá soubor řádek po řádku
(b) Rozdělí každý vstupní řádek na pole
(c) Porovná vstupní řádek/pole se vzorem
(d) Provádí akce na shodných liniích

2. Užitečné pro:
(a) Transformujte datové soubory
(b) Vytvářejte formátované zprávy

3. Programovací konstrukce:
(a) Naformátujte výstupní řádky
(b) Aritmetické a řetězcové operace
(c) Podmínky a smyčky

Syntax:

awk options 'selection _criteria {action }' input-file>výstupní-soubor>

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>zamestnanec.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik 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 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>

Ve výše uvedeném příkladu není uveden žádný vzor. Takže akce jsou použitelné pro všechny řádky. Tisk akce bez jakéhokoli argumentu standardně vytiskne celý řádek, takže vytiskne všechny řádky souboru bez selhání.

2. Vytiskněte čáry, které odpovídají danému vzoru.

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

Výstup:

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

Ve výše uvedeném příkladu příkaz awk vytiskne celý řádek, který se shoduje s ‚manager‘.

3. Rozdělení řádku na pole: Pro každý záznam, tj. řádek, příkaz awk rozdělí záznam standardně oddělený mezerou a uloží jej do proměnných $n. Pokud má řádek 4 slova, bude uložen v pořadí $1, $2, $3 a $4. Také $0 představuje celý řádek.

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

Výstup:

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

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

Vestavěné proměnné v Awk

Vestavěné proměnné Awk zahrnují proměnné pole – $1, $2, $3 atd. ($0 je celý řádek) – které rozdělují řádek textu na jednotlivá slova nebo části zvané pole.

    NR: Příkaz NR uchovává aktuální počet vstupních záznamů. Pamatujte, ž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 uchovává 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ím řádku. Výchozí hodnota je bílá mezera, což znamená mezeru a znaky tabulátoru. FS lze znovu přiřadit jinému znaku (obvykle v BEGIN), aby se změnil oddělovač pole. RS: Příkaz RS ukládá aktuální znak oddělovače záznamu. Protože je ve výchozím nastavení vstupním záznamem vstupní řádek, výchozím znakem oddělovače záznamu je nový řádek. OFS: Příkaz OFS ukládá oddělovač výstupních polí, který odděluje pole, když je Awk vytiskne. Výchozí nastavení je prázdné místo. Kdykoli má tisk několik parametrů oddělených čárkami, vypíše hodnotu OFS mezi každý parametr. ORS: Příkaz ORS ukládá oddělovač výstupních záznamů, který odděluje výstupní řádky, když je Awk vytiskne. Výchozí je znak nového řádku. print automaticky vytiskne obsah ORS na konci všeho, co je dáno k tisku.

Příklady:

Použití vestavěných proměnných NR (číslo řádku displeje)

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

Výstup:

1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>

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

Použití vestavěných proměnných NF (Zobrazit poslední pole)

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

Výstup:

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

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

Další použití vestavěných proměnných NR (zobrazovací řádek od 3 do 6)

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

Výstup:

3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>

Další příklady

Pro daný textový soubor:

$cat>geeksforgeeks.txt A B C Tarun A12 1 Muž B6 2 Praveen M42 3>

1) Chcete-li vytisknout první položku spolu s číslem řádku (NR) odděleným znakem – z každého řádku v souboru geeksforgeeks.txt:

$ awk '{print NR '- ' $1 }' geeksforgeeks.txt>
1 - A 2 - Tarun 3 – Manav 4 - Praveen>

2) Chcete-li vrátit druhý sloupec/položku z geeksforgeeks.txt:

Otázka by měla znít:- Chcete-li vrátit druhý sloupec/položku z geeksforgeeks.txt:

$ awk '{print $2}' geeksforgeeks.txt>
B A12 B6 M42>

3) Chcete-li vytisknout jakýkoli neprázdný řádek, pokud existuje

$ awk 'NF <0' geeksforgeeks.txt>

zde NF by mělo být 0 ne menší než a uživatel musí také vytisknout číslo řádku:

správná odpověď: awk ‘NF == 0 {print NR}’ geeksforgeeks.txt

NEBO

awk ‘NF <= 0 {print NR}’ geeksforgeeks.txt

0>

4) Chcete-li zjistit délku nejdelšího řádku v souboru:

$ awk '{ if (length($0)>max) max = délka (0 $) } KONEC { tisk max. }' geeksforgeeks.txt>
13>

5) Chcete-li počítat řádky v souboru:

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

6) Tisk řádků s více než 10 znaky:

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

7) Chcete-li najít/zkontrolovat jakýkoli řetězec v jakémkoli konkrétním sloupci:

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

8) Chcete-li vytisknout druhé mocniny prvních čísel od 1 do n, řekněte 6:

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


představuje celý řádek.

$ awk '{print ,}' employee.txt>

Výstup:

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

Ve výše uvedeném příkladu představuje a pole Jméno a Plat.

Vestavěné proměnné v Awk

Vestavěné proměnné Awk zahrnují proměnné pole – , , atd. (

Awk je skriptovací jazyk používaný pro manipulaci s daty a generování sestav. Příkazový programovací jazyk awk nevyžaduje žádnou kompilaci a umožňuje uživateli používat proměnné, numerické funkce, řetězcové funkce a logické operátory.

Awk je nástroj, který umožňuje programátorovi psát malé, ale účinné programy ve formě příkazů, které definují textové vzory, které se mají hledat v každém řádku dokumentu, a akci, která se má provést, když je nalezena shoda v dokumentu. čára. Awk se většinou používá pro skenování a zpracování vzorů. Prohledá jeden nebo více souborů, aby zjistil, zda obsahují řádky, které odpovídají zadaným vzorům, a poté provede související akce.

Awk je zkratka ze jmen vývojářů – Aho, Weinberger a Kernighan.

CO MŮŽEME DĚLAT S AWK?

1. Operace AWK:
(a) Prohledá soubor řádek po řádku
(b) Rozdělí každý vstupní řádek na pole
(c) Porovná vstupní řádek/pole se vzorem
(d) Provádí akce na shodných liniích

2. Užitečné pro:
(a) Transformujte datové soubory
(b) Vytvářejte formátované zprávy

3. Programovací konstrukce:
(a) Naformátujte výstupní řádky
(b) Aritmetické a řetězcové operace
(c) Podmínky a smyčky

Syntax:

awk options 'selection _criteria {action }' input-file>výstupní-soubor>

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>zamestnanec.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik 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 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>

Ve výše uvedeném příkladu není uveden žádný vzor. Takže akce jsou použitelné pro všechny řádky. Tisk akce bez jakéhokoli argumentu standardně vytiskne celý řádek, takže vytiskne všechny řádky souboru bez selhání.

2. Vytiskněte čáry, které odpovídají danému vzoru.

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

Výstup:

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

Ve výše uvedeném příkladu příkaz awk vytiskne celý řádek, který se shoduje s ‚manager‘.

3. Rozdělení řádku na pole: Pro každý záznam, tj. řádek, příkaz awk rozdělí záznam standardně oddělený mezerou a uloží jej do proměnných $n. Pokud má řádek 4 slova, bude uložen v pořadí $1, $2, $3 a $4. Také $0 představuje celý řádek.

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

Výstup:

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

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

Vestavěné proměnné v Awk

Vestavěné proměnné Awk zahrnují proměnné pole – $1, $2, $3 atd. ($0 je celý řádek) – které rozdělují řádek textu na jednotlivá slova nebo části zvané pole.

    NR: Příkaz NR uchovává aktuální počet vstupních záznamů. Pamatujte, ž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 uchovává 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ím řádku. Výchozí hodnota je bílá mezera, což znamená mezeru a znaky tabulátoru. FS lze znovu přiřadit jinému znaku (obvykle v BEGIN), aby se změnil oddělovač pole. RS: Příkaz RS ukládá aktuální znak oddělovače záznamu. Protože je ve výchozím nastavení vstupním záznamem vstupní řádek, výchozím znakem oddělovače záznamu je nový řádek. OFS: Příkaz OFS ukládá oddělovač výstupních polí, který odděluje pole, když je Awk vytiskne. Výchozí nastavení je prázdné místo. Kdykoli má tisk několik parametrů oddělených čárkami, vypíše hodnotu OFS mezi každý parametr. ORS: Příkaz ORS ukládá oddělovač výstupních záznamů, který odděluje výstupní řádky, když je Awk vytiskne. Výchozí je znak nového řádku. print automaticky vytiskne obsah ORS na konci všeho, co je dáno k tisku.

Příklady:

Použití vestavěných proměnných NR (číslo řádku displeje)

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

Výstup:

1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>

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

Použití vestavěných proměnných NF (Zobrazit poslední pole)

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

Výstup:

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

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

Další použití vestavěných proměnných NR (zobrazovací řádek od 3 do 6)

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

Výstup:

3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>

Další příklady

Pro daný textový soubor:

$cat>geeksforgeeks.txt A B C Tarun A12 1 Muž B6 2 Praveen M42 3>

1) Chcete-li vytisknout první položku spolu s číslem řádku (NR) odděleným znakem – z každého řádku v souboru geeksforgeeks.txt:

$ awk '{print NR '- ' $1 }' geeksforgeeks.txt>
1 - A 2 - Tarun 3 – Manav 4 - Praveen>

2) Chcete-li vrátit druhý sloupec/položku z geeksforgeeks.txt:

Otázka by měla znít:- Chcete-li vrátit druhý sloupec/položku z geeksforgeeks.txt:

$ awk '{print $2}' geeksforgeeks.txt>
B A12 B6 M42>

3) Chcete-li vytisknout jakýkoli neprázdný řádek, pokud existuje

$ awk 'NF <0' geeksforgeeks.txt>

zde NF by mělo být 0 ne menší než a uživatel musí také vytisknout číslo řádku:

správná odpověď: awk ‘NF == 0 {print NR}’ geeksforgeeks.txt

NEBO

awk ‘NF <= 0 {print NR}’ geeksforgeeks.txt

0>

4) Chcete-li zjistit délku nejdelšího řádku v souboru:

$ awk '{ if (length($0)>max) max = délka (0 $) } KONEC { tisk max. }' geeksforgeeks.txt>
13>

5) Chcete-li počítat řádky v souboru:

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

6) Tisk řádků s více než 10 znaky:

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

7) Chcete-li najít/zkontrolovat jakýkoli řetězec v jakémkoli konkrétním sloupci:

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

8) Chcete-li vytisknout druhé mocniny prvních čísel od 1 do n, řekněte 6:

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


je celý řádek) – které rozdělují řádek textu na jednotlivá slova nebo části zvané pole.

    NR: Příkaz NR uchovává aktuální počet vstupních záznamů. Pamatujte, ž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 uchovává 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ím řádku. Výchozí hodnota je bílá mezera, což znamená mezeru a znaky tabulátoru. FS lze znovu přiřadit jinému znaku (obvykle v BEGIN), aby se změnil oddělovač pole. RS: Příkaz RS ukládá aktuální znak oddělovače záznamu. Protože je ve výchozím nastavení vstupním záznamem vstupní řádek, výchozím znakem oddělovače záznamu je nový řádek. OFS: Příkaz OFS ukládá oddělovač výstupních polí, který odděluje pole, když je Awk vytiskne. Výchozí nastavení je prázdné místo. Kdykoli má tisk několik parametrů oddělených čárkami, vypíše hodnotu OFS mezi každý parametr. ORS: Příkaz ORS ukládá oddělovač výstupních záznamů, který odděluje výstupní řádky, když je Awk vytiskne. Výchozí je znak nového řádku. print automaticky vytiskne obsah ORS na konci všeho, co je dáno k tisku.

Příklady:

Použití vestavěných proměnných NR (číslo řádku displeje)

$ awk '{print NR,

Awk je skriptovací jazyk používaný pro manipulaci s daty a generování sestav. Příkazový programovací jazyk awk nevyžaduje žádnou kompilaci a umožňuje uživateli používat proměnné, numerické funkce, řetězcové funkce a logické operátory.

Awk je nástroj, který umožňuje programátorovi psát malé, ale účinné programy ve formě příkazů, které definují textové vzory, které se mají hledat v každém řádku dokumentu, a akci, která se má provést, když je nalezena shoda v dokumentu. čára. Awk se většinou používá pro skenování a zpracování vzorů. Prohledá jeden nebo více souborů, aby zjistil, zda obsahují řádky, které odpovídají zadaným vzorům, a poté provede související akce.

Awk je zkratka ze jmen vývojářů – Aho, Weinberger a Kernighan.

CO MŮŽEME DĚLAT S AWK?

1. Operace AWK:
(a) Prohledá soubor řádek po řádku
(b) Rozdělí každý vstupní řádek na pole
(c) Porovná vstupní řádek/pole se vzorem
(d) Provádí akce na shodných liniích

2. Užitečné pro:
(a) Transformujte datové soubory
(b) Vytvářejte formátované zprávy

3. Programovací konstrukce:
(a) Naformátujte výstupní řádky
(b) Aritmetické a řetězcové operace
(c) Podmínky a smyčky

Syntax:

awk options 'selection _criteria {action }' input-file>výstupní-soubor>

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>zamestnanec.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik 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 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>

Ve výše uvedeném příkladu není uveden žádný vzor. Takže akce jsou použitelné pro všechny řádky. Tisk akce bez jakéhokoli argumentu standardně vytiskne celý řádek, takže vytiskne všechny řádky souboru bez selhání.

2. Vytiskněte čáry, které odpovídají danému vzoru.

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

Výstup:

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

Ve výše uvedeném příkladu příkaz awk vytiskne celý řádek, který se shoduje s ‚manager‘.

3. Rozdělení řádku na pole: Pro každý záznam, tj. řádek, příkaz awk rozdělí záznam standardně oddělený mezerou a uloží jej do proměnných $n. Pokud má řádek 4 slova, bude uložen v pořadí $1, $2, $3 a $4. Také $0 představuje celý řádek.

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

Výstup:

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

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

Vestavěné proměnné v Awk

Vestavěné proměnné Awk zahrnují proměnné pole – $1, $2, $3 atd. ($0 je celý řádek) – které rozdělují řádek textu na jednotlivá slova nebo části zvané pole.

    NR: Příkaz NR uchovává aktuální počet vstupních záznamů. Pamatujte, ž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 uchovává 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ím řádku. Výchozí hodnota je bílá mezera, což znamená mezeru a znaky tabulátoru. FS lze znovu přiřadit jinému znaku (obvykle v BEGIN), aby se změnil oddělovač pole. RS: Příkaz RS ukládá aktuální znak oddělovače záznamu. Protože je ve výchozím nastavení vstupním záznamem vstupní řádek, výchozím znakem oddělovače záznamu je nový řádek. OFS: Příkaz OFS ukládá oddělovač výstupních polí, který odděluje pole, když je Awk vytiskne. Výchozí nastavení je prázdné místo. Kdykoli má tisk několik parametrů oddělených čárkami, vypíše hodnotu OFS mezi každý parametr. ORS: Příkaz ORS ukládá oddělovač výstupních záznamů, který odděluje výstupní řádky, když je Awk vytiskne. Výchozí je znak nového řádku. print automaticky vytiskne obsah ORS na konci všeho, co je dáno k tisku.

Příklady:

Použití vestavěných proměnných NR (číslo řádku displeje)

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

Výstup:

1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>

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

Použití vestavěných proměnných NF (Zobrazit poslední pole)

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

Výstup:

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

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

Další použití vestavěných proměnných NR (zobrazovací řádek od 3 do 6)

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

Výstup:

3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>

Další příklady

Pro daný textový soubor:

$cat>geeksforgeeks.txt A B C Tarun A12 1 Muž B6 2 Praveen M42 3>

1) Chcete-li vytisknout první položku spolu s číslem řádku (NR) odděleným znakem – z každého řádku v souboru geeksforgeeks.txt:

$ awk '{print NR '- ' $1 }' geeksforgeeks.txt>
1 - A 2 - Tarun 3 – Manav 4 - Praveen>

2) Chcete-li vrátit druhý sloupec/položku z geeksforgeeks.txt:

Otázka by měla znít:- Chcete-li vrátit druhý sloupec/položku z geeksforgeeks.txt:

$ awk '{print $2}' geeksforgeeks.txt>
B A12 B6 M42>

3) Chcete-li vytisknout jakýkoli neprázdný řádek, pokud existuje

$ awk 'NF <0' geeksforgeeks.txt>

zde NF by mělo být 0 ne menší než a uživatel musí také vytisknout číslo řádku:

správná odpověď: awk ‘NF == 0 {print NR}’ geeksforgeeks.txt

NEBO

awk ‘NF <= 0 {print NR}’ geeksforgeeks.txt

0>

4) Chcete-li zjistit délku nejdelšího řádku v souboru:

$ awk '{ if (length($0)>max) max = délka (0 $) } KONEC { tisk max. }' geeksforgeeks.txt>
13>

5) Chcete-li počítat řádky v souboru:

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

6) Tisk řádků s více než 10 znaky:

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

7) Chcete-li najít/zkontrolovat jakýkoli řetězec v jakémkoli konkrétním sloupci:

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

8) Chcete-li vytisknout druhé mocniny prvních čísel od 1 do n, řekněte 6:

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


}' employee.txt>

Výstup:

1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>

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

Použití vestavěných proměnných NF (Zobrazit poslední pole)

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

Výstup:

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

Ve výše uvedeném příkladu představuje jméno a $NF představuje plat. Plat můžeme získat pomocí $NF , kde $NF představuje poslední pole.

Další použití vestavěných proměnných NR (zobrazovací řádek od 3 do 6)

$ awk 'NR==3, NR==6 {print NR,

Awk je skriptovací jazyk používaný pro manipulaci s daty a generování sestav. Příkazový programovací jazyk awk nevyžaduje žádnou kompilaci a umožňuje uživateli používat proměnné, numerické funkce, řetězcové funkce a logické operátory.

Awk je nástroj, který umožňuje programátorovi psát malé, ale účinné programy ve formě příkazů, které definují textové vzory, které se mají hledat v každém řádku dokumentu, a akci, která se má provést, když je nalezena shoda v dokumentu. čára. Awk se většinou používá pro skenování a zpracování vzorů. Prohledá jeden nebo více souborů, aby zjistil, zda obsahují řádky, které odpovídají zadaným vzorům, a poté provede související akce.

Awk je zkratka ze jmen vývojářů – Aho, Weinberger a Kernighan.

CO MŮŽEME DĚLAT S AWK?

1. Operace AWK:
(a) Prohledá soubor řádek po řádku
(b) Rozdělí každý vstupní řádek na pole
(c) Porovná vstupní řádek/pole se vzorem
(d) Provádí akce na shodných liniích

2. Užitečné pro:
(a) Transformujte datové soubory
(b) Vytvářejte formátované zprávy

3. Programovací konstrukce:
(a) Naformátujte výstupní řádky
(b) Aritmetické a řetězcové operace
(c) Podmínky a smyčky

Syntax:

awk options 'selection _criteria {action }' input-file>výstupní-soubor>

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>zamestnanec.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik 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 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>

Ve výše uvedeném příkladu není uveden žádný vzor. Takže akce jsou použitelné pro všechny řádky. Tisk akce bez jakéhokoli argumentu standardně vytiskne celý řádek, takže vytiskne všechny řádky souboru bez selhání.

2. Vytiskněte čáry, které odpovídají danému vzoru.

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

Výstup:

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

Ve výše uvedeném příkladu příkaz awk vytiskne celý řádek, který se shoduje s ‚manager‘.

3. Rozdělení řádku na pole: Pro každý záznam, tj. řádek, příkaz awk rozdělí záznam standardně oddělený mezerou a uloží jej do proměnných $n. Pokud má řádek 4 slova, bude uložen v pořadí $1, $2, $3 a $4. Také $0 představuje celý řádek.

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

Výstup:

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

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

Vestavěné proměnné v Awk

Vestavěné proměnné Awk zahrnují proměnné pole – $1, $2, $3 atd. ($0 je celý řádek) – které rozdělují řádek textu na jednotlivá slova nebo části zvané pole.

    NR: Příkaz NR uchovává aktuální počet vstupních záznamů. Pamatujte, ž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 uchovává 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ím řádku. Výchozí hodnota je bílá mezera, což znamená mezeru a znaky tabulátoru. FS lze znovu přiřadit jinému znaku (obvykle v BEGIN), aby se změnil oddělovač pole. RS: Příkaz RS ukládá aktuální znak oddělovače záznamu. Protože je ve výchozím nastavení vstupním záznamem vstupní řádek, výchozím znakem oddělovače záznamu je nový řádek. OFS: Příkaz OFS ukládá oddělovač výstupních polí, který odděluje pole, když je Awk vytiskne. Výchozí nastavení je prázdné místo. Kdykoli má tisk několik parametrů oddělených čárkami, vypíše hodnotu OFS mezi každý parametr. ORS: Příkaz ORS ukládá oddělovač výstupních záznamů, který odděluje výstupní řádky, když je Awk vytiskne. Výchozí je znak nového řádku. print automaticky vytiskne obsah ORS na konci všeho, co je dáno k tisku.

Příklady:

Použití vestavěných proměnných NR (číslo řádku displeje)

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

Výstup:

1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>

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

Použití vestavěných proměnných NF (Zobrazit poslední pole)

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

Výstup:

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

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

Další použití vestavěných proměnných NR (zobrazovací řádek od 3 do 6)

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

Výstup:

3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>

Další příklady

Pro daný textový soubor:

$cat>geeksforgeeks.txt A B C Tarun A12 1 Muž B6 2 Praveen M42 3>

1) Chcete-li vytisknout první položku spolu s číslem řádku (NR) odděleným znakem – z každého řádku v souboru geeksforgeeks.txt:

$ awk '{print NR '- ' $1 }' geeksforgeeks.txt>
1 - A 2 - Tarun 3 – Manav 4 - Praveen>

2) Chcete-li vrátit druhý sloupec/položku z geeksforgeeks.txt:

Otázka by měla znít:- Chcete-li vrátit druhý sloupec/položku z geeksforgeeks.txt:

$ awk '{print $2}' geeksforgeeks.txt>
B A12 B6 M42>

3) Chcete-li vytisknout jakýkoli neprázdný řádek, pokud existuje

$ awk 'NF <0' geeksforgeeks.txt>

zde NF by mělo být 0 ne menší než a uživatel musí také vytisknout číslo řádku:

správná odpověď: awk ‘NF == 0 {print NR}’ geeksforgeeks.txt

NEBO

awk ‘NF <= 0 {print NR}’ geeksforgeeks.txt

0>

4) Chcete-li zjistit délku nejdelšího řádku v souboru:

$ awk '{ if (length($0)>max) max = délka (0 $) } KONEC { tisk max. }' geeksforgeeks.txt>
13>

5) Chcete-li počítat řádky v souboru:

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

6) Tisk řádků s více než 10 znaky:

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

7) Chcete-li najít/zkontrolovat jakýkoli řetězec v jakémkoli konkrétním sloupci:

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

8) Chcete-li vytisknout druhé mocniny prvních čísel od 1 do n, řekněte 6:

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


}' employee.txt>

Výstup:

3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>

Další příklady

Pro daný textový soubor:

$cat>geeksforgeeks.txt A B C Tarun A12 1 Muž B6 2 Praveen M42 3>

1) Chcete-li vytisknout první položku spolu s číslem řádku (NR) odděleným znakem – z každého řádku v souboru geeksforgeeks.txt:

$ awk '{print NR '- '  }' geeksforgeeks.txt>
1 - A 2 - Tarun 3 – Manav 4 - Praveen>

2) Chcete-li vrátit druhý sloupec/položku z geeksforgeeks.txt:

bash proměnná

Otázka by měla znít:- Chcete-li vrátit druhý sloupec/položku z geeksforgeeks.txt:

$ awk '{print }' geeksforgeeks.txt>
B A12 B6 M42>

3) Chcete-li vytisknout jakýkoli neprázdný řádek, pokud existuje

$ awk 'NF <0' geeksforgeeks.txt>

zde NF by mělo být 0 ne menší než a uživatel musí také vytisknout číslo řádku:

správná odpověď: awk ‘NF == 0 {print NR}’ geeksforgeeks.txt

NEBO

awk ‘NF <= 0 {print NR}’ geeksforgeeks.txt

0>

4) Chcete-li zjistit délku nejdelšího řádku v souboru:

$ awk '{ if (length(

Awk je skriptovací jazyk používaný pro manipulaci s daty a generování sestav. Příkazový programovací jazyk awk nevyžaduje žádnou kompilaci a umožňuje uživateli používat proměnné, numerické funkce, řetězcové funkce a logické operátory.

Awk je nástroj, který umožňuje programátorovi psát malé, ale účinné programy ve formě příkazů, které definují textové vzory, které se mají hledat v každém řádku dokumentu, a akci, která se má provést, když je nalezena shoda v dokumentu. čára. Awk se většinou používá pro skenování a zpracování vzorů. Prohledá jeden nebo více souborů, aby zjistil, zda obsahují řádky, které odpovídají zadaným vzorům, a poté provede související akce.

Awk je zkratka ze jmen vývojářů – Aho, Weinberger a Kernighan.

CO MŮŽEME DĚLAT S AWK?

1. Operace AWK:
(a) Prohledá soubor řádek po řádku
(b) Rozdělí každý vstupní řádek na pole
(c) Porovná vstupní řádek/pole se vzorem
(d) Provádí akce na shodných liniích

2. Užitečné pro:
(a) Transformujte datové soubory
(b) Vytvářejte formátované zprávy

3. Programovací konstrukce:
(a) Naformátujte výstupní řádky
(b) Aritmetické a řetězcové operace
(c) Podmínky a smyčky

Syntax:

awk options 'selection _criteria {action }' input-file>výstupní-soubor>

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>zamestnanec.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik 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 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>

Ve výše uvedeném příkladu není uveden žádný vzor. Takže akce jsou použitelné pro všechny řádky. Tisk akce bez jakéhokoli argumentu standardně vytiskne celý řádek, takže vytiskne všechny řádky souboru bez selhání.

2. Vytiskněte čáry, které odpovídají danému vzoru.

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

Výstup:

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

Ve výše uvedeném příkladu příkaz awk vytiskne celý řádek, který se shoduje s ‚manager‘.

3. Rozdělení řádku na pole: Pro každý záznam, tj. řádek, příkaz awk rozdělí záznam standardně oddělený mezerou a uloží jej do proměnných $n. Pokud má řádek 4 slova, bude uložen v pořadí $1, $2, $3 a $4. Také $0 představuje celý řádek.

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

Výstup:

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

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

Vestavěné proměnné v Awk

Vestavěné proměnné Awk zahrnují proměnné pole – $1, $2, $3 atd. ($0 je celý řádek) – které rozdělují řádek textu na jednotlivá slova nebo části zvané pole.

    NR: Příkaz NR uchovává aktuální počet vstupních záznamů. Pamatujte, ž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 uchovává 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ím řádku. Výchozí hodnota je bílá mezera, což znamená mezeru a znaky tabulátoru. FS lze znovu přiřadit jinému znaku (obvykle v BEGIN), aby se změnil oddělovač pole. RS: Příkaz RS ukládá aktuální znak oddělovače záznamu. Protože je ve výchozím nastavení vstupním záznamem vstupní řádek, výchozím znakem oddělovače záznamu je nový řádek. OFS: Příkaz OFS ukládá oddělovač výstupních polí, který odděluje pole, když je Awk vytiskne. Výchozí nastavení je prázdné místo. Kdykoli má tisk několik parametrů oddělených čárkami, vypíše hodnotu OFS mezi každý parametr. ORS: Příkaz ORS ukládá oddělovač výstupních záznamů, který odděluje výstupní řádky, když je Awk vytiskne. Výchozí je znak nového řádku. print automaticky vytiskne obsah ORS na konci všeho, co je dáno k tisku.

Příklady:

Použití vestavěných proměnných NR (číslo řádku displeje)

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

Výstup:

1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>

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

Použití vestavěných proměnných NF (Zobrazit poslední pole)

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

Výstup:

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

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

Další použití vestavěných proměnných NR (zobrazovací řádek od 3 do 6)

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

Výstup:

3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>

Další příklady

Pro daný textový soubor:

$cat>geeksforgeeks.txt A B C Tarun A12 1 Muž B6 2 Praveen M42 3>

1) Chcete-li vytisknout první položku spolu s číslem řádku (NR) odděleným znakem – z každého řádku v souboru geeksforgeeks.txt:

$ awk '{print NR '- ' $1 }' geeksforgeeks.txt>
1 - A 2 - Tarun 3 – Manav 4 - Praveen>

2) Chcete-li vrátit druhý sloupec/položku z geeksforgeeks.txt:

Otázka by měla znít:- Chcete-li vrátit druhý sloupec/položku z geeksforgeeks.txt:

$ awk '{print $2}' geeksforgeeks.txt>
B A12 B6 M42>

3) Chcete-li vytisknout jakýkoli neprázdný řádek, pokud existuje

$ awk 'NF <0' geeksforgeeks.txt>

zde NF by mělo být 0 ne menší než a uživatel musí také vytisknout číslo řádku:

správná odpověď: awk ‘NF == 0 {print NR}’ geeksforgeeks.txt

NEBO

awk ‘NF <= 0 {print NR}’ geeksforgeeks.txt

0>

4) Chcete-li zjistit délku nejdelšího řádku v souboru:

$ awk '{ if (length($0)>max) max = délka (0 $) } KONEC { tisk max. }' geeksforgeeks.txt>
13>

5) Chcete-li počítat řádky v souboru:

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

6) Tisk řádků s více než 10 znaky:

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

7) Chcete-li najít/zkontrolovat jakýkoli řetězec v jakémkoli konkrétním sloupci:

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

8) Chcete-li vytisknout druhé mocniny prvních čísel od 1 do n, řekněte 6:

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


)>max) max = délka (0 $) } KONEC { tisk max. }' geeksforgeeks.txt>
13>

5) Chcete-li počítat řádky v souboru:

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

6) Tisk řádků s více než 10 znaky:

$ awk 'length(

Awk je skriptovací jazyk používaný pro manipulaci s daty a generování sestav. Příkazový programovací jazyk awk nevyžaduje žádnou kompilaci a umožňuje uživateli používat proměnné, numerické funkce, řetězcové funkce a logické operátory.

Awk je nástroj, který umožňuje programátorovi psát malé, ale účinné programy ve formě příkazů, které definují textové vzory, které se mají hledat v každém řádku dokumentu, a akci, která se má provést, když je nalezena shoda v dokumentu. čára. Awk se většinou používá pro skenování a zpracování vzorů. Prohledá jeden nebo více souborů, aby zjistil, zda obsahují řádky, které odpovídají zadaným vzorům, a poté provede související akce.

Awk je zkratka ze jmen vývojářů – Aho, Weinberger a Kernighan.

CO MŮŽEME DĚLAT S AWK?

1. Operace AWK:
(a) Prohledá soubor řádek po řádku
(b) Rozdělí každý vstupní řádek na pole
(c) Porovná vstupní řádek/pole se vzorem
(d) Provádí akce na shodných liniích

2. Užitečné pro:
(a) Transformujte datové soubory
(b) Vytvářejte formátované zprávy

3. Programovací konstrukce:
(a) Naformátujte výstupní řádky
(b) Aritmetické a řetězcové operace
(c) Podmínky a smyčky

Syntax:

awk options 'selection _criteria {action }' input-file>výstupní-soubor>

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>zamestnanec.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik 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 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>

Ve výše uvedeném příkladu není uveden žádný vzor. Takže akce jsou použitelné pro všechny řádky. Tisk akce bez jakéhokoli argumentu standardně vytiskne celý řádek, takže vytiskne všechny řádky souboru bez selhání.

2. Vytiskněte čáry, které odpovídají danému vzoru.

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

Výstup:

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

Ve výše uvedeném příkladu příkaz awk vytiskne celý řádek, který se shoduje s ‚manager‘.

3. Rozdělení řádku na pole: Pro každý záznam, tj. řádek, příkaz awk rozdělí záznam standardně oddělený mezerou a uloží jej do proměnných $n. Pokud má řádek 4 slova, bude uložen v pořadí $1, $2, $3 a $4. Také $0 představuje celý řádek.

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

Výstup:

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

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

Vestavěné proměnné v Awk

Vestavěné proměnné Awk zahrnují proměnné pole – $1, $2, $3 atd. ($0 je celý řádek) – které rozdělují řádek textu na jednotlivá slova nebo části zvané pole.

    NR: Příkaz NR uchovává aktuální počet vstupních záznamů. Pamatujte, ž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 uchovává 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ím řádku. Výchozí hodnota je bílá mezera, což znamená mezeru a znaky tabulátoru. FS lze znovu přiřadit jinému znaku (obvykle v BEGIN), aby se změnil oddělovač pole. RS: Příkaz RS ukládá aktuální znak oddělovače záznamu. Protože je ve výchozím nastavení vstupním záznamem vstupní řádek, výchozím znakem oddělovače záznamu je nový řádek. OFS: Příkaz OFS ukládá oddělovač výstupních polí, který odděluje pole, když je Awk vytiskne. Výchozí nastavení je prázdné místo. Kdykoli má tisk několik parametrů oddělených čárkami, vypíše hodnotu OFS mezi každý parametr. ORS: Příkaz ORS ukládá oddělovač výstupních záznamů, který odděluje výstupní řádky, když je Awk vytiskne. Výchozí je znak nového řádku. print automaticky vytiskne obsah ORS na konci všeho, co je dáno k tisku.

Příklady:

Použití vestavěných proměnných NR (číslo řádku displeje)

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

Výstup:

1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>

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

Použití vestavěných proměnných NF (Zobrazit poslední pole)

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

Výstup:

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

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

Další použití vestavěných proměnných NR (zobrazovací řádek od 3 do 6)

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

Výstup:

3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>

Další příklady

Pro daný textový soubor:

$cat>geeksforgeeks.txt A B C Tarun A12 1 Muž B6 2 Praveen M42 3>

1) Chcete-li vytisknout první položku spolu s číslem řádku (NR) odděleným znakem – z každého řádku v souboru geeksforgeeks.txt:

$ awk '{print NR '- ' $1 }' geeksforgeeks.txt>
1 - A 2 - Tarun 3 – Manav 4 - Praveen>

2) Chcete-li vrátit druhý sloupec/položku z geeksforgeeks.txt:

Otázka by měla znít:- Chcete-li vrátit druhý sloupec/položku z geeksforgeeks.txt:

$ awk '{print $2}' geeksforgeeks.txt>
B A12 B6 M42>

3) Chcete-li vytisknout jakýkoli neprázdný řádek, pokud existuje

$ awk 'NF <0' geeksforgeeks.txt>

zde NF by mělo být 0 ne menší než a uživatel musí také vytisknout číslo řádku:

správná odpověď: awk ‘NF == 0 {print NR}’ geeksforgeeks.txt

NEBO

awk ‘NF <= 0 {print NR}’ geeksforgeeks.txt

0>

4) Chcete-li zjistit délku nejdelšího řádku v souboru:

$ awk '{ if (length($0)>max) max = délka (0 $) } KONEC { tisk max. }' geeksforgeeks.txt>
13>

5) Chcete-li počítat řádky v souboru:

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

6) Tisk řádků s více než 10 znaky:

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

7) Chcete-li najít/zkontrolovat jakýkoli řetězec v jakémkoli konkrétním sloupci:

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

8) Chcete-li vytisknout druhé mocniny prvních čísel od 1 do n, řekněte 6:

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


)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>

7) Chcete-li najít/zkontrolovat jakýkoli řetězec v jakémkoli konkrétním sloupci:

$ awk '{ if( == 'B6') print 

Awk je skriptovací jazyk používaný pro manipulaci s daty a generování sestav. Příkazový programovací jazyk awk nevyžaduje žádnou kompilaci a umožňuje uživateli používat proměnné, numerické funkce, řetězcové funkce a logické operátory.

Awk je nástroj, který umožňuje programátorovi psát malé, ale účinné programy ve formě příkazů, které definují textové vzory, které se mají hledat v každém řádku dokumentu, a akci, která se má provést, když je nalezena shoda v dokumentu. čára. Awk se většinou používá pro skenování a zpracování vzorů. Prohledá jeden nebo více souborů, aby zjistil, zda obsahují řádky, které odpovídají zadaným vzorům, a poté provede související akce.

Awk je zkratka ze jmen vývojářů – Aho, Weinberger a Kernighan.

CO MŮŽEME DĚLAT S AWK?

1. Operace AWK:
(a) Prohledá soubor řádek po řádku
(b) Rozdělí každý vstupní řádek na pole
(c) Porovná vstupní řádek/pole se vzorem
(d) Provádí akce na shodných liniích

2. Užitečné pro:
(a) Transformujte datové soubory
(b) Vytvářejte formátované zprávy

3. Programovací konstrukce:
(a) Naformátujte výstupní řádky
(b) Aritmetické a řetězcové operace
(c) Podmínky a smyčky

Syntax:

awk options 'selection _criteria {action }' input-file>výstupní-soubor>

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>zamestnanec.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik 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 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>

Ve výše uvedeném příkladu není uveden žádný vzor. Takže akce jsou použitelné pro všechny řádky. Tisk akce bez jakéhokoli argumentu standardně vytiskne celý řádek, takže vytiskne všechny řádky souboru bez selhání.

2. Vytiskněte čáry, které odpovídají danému vzoru.

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

Výstup:

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

Ve výše uvedeném příkladu příkaz awk vytiskne celý řádek, který se shoduje s ‚manager‘.

3. Rozdělení řádku na pole: Pro každý záznam, tj. řádek, příkaz awk rozdělí záznam standardně oddělený mezerou a uloží jej do proměnných $n. Pokud má řádek 4 slova, bude uložen v pořadí $1, $2, $3 a $4. Také $0 představuje celý řádek.

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

Výstup:

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

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

Vestavěné proměnné v Awk

Vestavěné proměnné Awk zahrnují proměnné pole – $1, $2, $3 atd. ($0 je celý řádek) – které rozdělují řádek textu na jednotlivá slova nebo části zvané pole.

    NR: Příkaz NR uchovává aktuální počet vstupních záznamů. Pamatujte, ž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 uchovává 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ím řádku. Výchozí hodnota je bílá mezera, což znamená mezeru a znaky tabulátoru. FS lze znovu přiřadit jinému znaku (obvykle v BEGIN), aby se změnil oddělovač pole. RS: Příkaz RS ukládá aktuální znak oddělovače záznamu. Protože je ve výchozím nastavení vstupním záznamem vstupní řádek, výchozím znakem oddělovače záznamu je nový řádek. OFS: Příkaz OFS ukládá oddělovač výstupních polí, který odděluje pole, když je Awk vytiskne. Výchozí nastavení je prázdné místo. Kdykoli má tisk několik parametrů oddělených čárkami, vypíše hodnotu OFS mezi každý parametr. ORS: Příkaz ORS ukládá oddělovač výstupních záznamů, který odděluje výstupní řádky, když je Awk vytiskne. Výchozí je znak nového řádku. print automaticky vytiskne obsah ORS na konci všeho, co je dáno k tisku.

Příklady:

Použití vestavěných proměnných NR (číslo řádku displeje)

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

Výstup:

1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>

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

Použití vestavěných proměnných NF (Zobrazit poslední pole)

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

Výstup:

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

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

Další použití vestavěných proměnných NR (zobrazovací řádek od 3 do 6)

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

Výstup:

3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>

Další příklady

Pro daný textový soubor:

$cat>geeksforgeeks.txt A B C Tarun A12 1 Muž B6 2 Praveen M42 3>

1) Chcete-li vytisknout první položku spolu s číslem řádku (NR) odděleným znakem – z každého řádku v souboru geeksforgeeks.txt:

$ awk '{print NR '- ' $1 }' geeksforgeeks.txt>
1 - A 2 - Tarun 3 – Manav 4 - Praveen>

2) Chcete-li vrátit druhý sloupec/položku z geeksforgeeks.txt:

Otázka by měla znít:- Chcete-li vrátit druhý sloupec/položku z geeksforgeeks.txt:

$ awk '{print $2}' geeksforgeeks.txt>
B A12 B6 M42>

3) Chcete-li vytisknout jakýkoli neprázdný řádek, pokud existuje

$ awk 'NF <0' geeksforgeeks.txt>

zde NF by mělo být 0 ne menší než a uživatel musí také vytisknout číslo řádku:

správná odpověď: awk ‘NF == 0 {print NR}’ geeksforgeeks.txt

NEBO

awk ‘NF <= 0 {print NR}’ geeksforgeeks.txt

0>

4) Chcete-li zjistit délku nejdelšího řádku v souboru:

$ awk '{ if (length($0)>max) max = délka (0 $) } KONEC { tisk max. }' geeksforgeeks.txt>
13>

5) Chcete-li počítat řádky v souboru:

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

6) Tisk řádků s více než 10 znaky:

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

7) Chcete-li najít/zkontrolovat jakýkoli řetězec v jakémkoli konkrétním sloupci:

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

8) Chcete-li vytisknout druhé mocniny prvních čísel od 1 do n, řekněte 6:

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


;}' geeksforgeeks.txt>

8) Chcete-li vytisknout druhé mocniny prvních čísel od 1 do n, řekněte 6:

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