Awk je skriptovací jazyk používaný na manipuláciu s údajmi a generovanie správ. Príkazový programovací jazyk awk nevyžaduje žiadne kompilovanie a umožňuje používateľovi používať premenné, číselné funkcie, reťazcové funkcie a logické operátory.
Awk je pomôcka, ktorá umožňuje programátorovi písať malé, ale efektívne programy vo forme príkazov, ktoré definujú textové vzory, ktoré sa majú hľadať v každom riadku dokumentu, a akciu, ktorá sa má vykonať, keď sa nájde zhoda v dokumente. riadok. Awk sa väčšinou používa na skenovanie a spracovanie vzorov. Prehľadá jeden alebo viacero súborov, aby zistil, či obsahujú riadky, ktoré sa zhodujú so zadanými vzormi, a potom vykoná súvisiace akcie.
Awk je skratka z mien vývojárov – Aho, Weinberger a Kernighan.
ČO MÔŽEME ROBIŤ S AWK?
1. Operácie AWK:
(a) Skenuje súbor riadok po riadku
(b) Rozdelí každý vstupný riadok do polí
(c) Porovnáva vstupný riadok/polia so vzorom
(d) Vykonáva činnosť (činnosti) na zhodných líniách
2. Užitočné pre:
(a) Transformujte dátové súbory
(b) Vytvárajte formátované správy
3. Programovacie konštrukcie:
a) Naformátujte výstupné riadky
b) Aritmetické a reťazcové operácie
c) Podmienky a slučky
„aký je rozdiel medzi levom a tigrom“
Syntax:
awk options 'selection _criteria {action }' input-file>výstupný-súbor> 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>
Vzorové príkazy
Príklad:
Zvážte nasledujúci textový súbor ako vstupný súbor pre všetky nižšie uvedené prí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. Predvolené správanie Awk: V predvolenom nastavení Awk vytlačí každý riadok údajov zo zadaného súboru.
$ awk '{print}' employee.txt> Výkon:
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>
Vo vyššie uvedenom príklade nie je uvedený žiadny vzor. Takže akcie sú použiteľné pre všetky riadky. Tlač akcie bez akéhokoľvek argumentu štandardne vytlačí celý riadok, takže vytlačí všetky riadky súboru bez zlyhania.
2. Vytlačte čiary, ktoré zodpovedajú danému vzoru.
$ awk '/manager/ {print}' employee.txt> Výkon:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Vo vyššie uvedenom príklade príkaz awk vytlačí celý riadok, ktorý sa zhoduje s „správcom“.
3. Rozdelenie riadku na polia : Pre každý záznam, tj riadok, príkaz awk štandardne rozdelí záznam oddelený znakom medzery a uloží ho do premenných $n. Ak má riadok 4 slová, uloží sa v poradí , , a . Tiež Awk je skriptovací jazyk používaný na manipuláciu s údajmi a generovanie správ. Príkazový programovací jazyk awk nevyžaduje žiadne kompilovanie a umožňuje používateľovi používať premenné, číselné funkcie, reťazcové funkcie a logické operátory. Awk je pomôcka, ktorá umožňuje programátorovi písať malé, ale efektívne programy vo forme príkazov, ktoré definujú textové vzory, ktoré sa majú hľadať v každom riadku dokumentu, a akciu, ktorá sa má vykonať, keď sa nájde zhoda v dokumente. riadok. Awk sa väčšinou používa na skenovanie a spracovanie vzorov. Prehľadá jeden alebo viacero súborov, aby zistil, či obsahujú riadky, ktoré sa zhodujú so zadanými vzormi, a potom vykoná súvisiace akcie. Awk je skratka z mien vývojárov – Aho, Weinberger a Kernighan. ČO MÔŽEME ROBIŤ S AWK? 1. Operácie AWK: 2. Užitočné pre: 3. Programovacie konštrukcie: Syntax: Možnosti: Vzorové príkazy Príklad: Zvážte nasledujúci textový súbor ako vstupný súbor pre všetky nižšie uvedené prípady: 1. Predvolené správanie Awk: V predvolenom nastavení Awk vytlačí každý riadok údajov zo zadaného súboru. Výkon: Vo vyššie uvedenom príklade nie je uvedený žiadny vzor. Takže akcie sú použiteľné pre všetky riadky. Tlač akcie bez akéhokoľvek argumentu štandardne vytlačí celý riadok, takže vytlačí všetky riadky súboru bez zlyhania. 2. Vytlačte čiary, ktoré zodpovedajú danému vzoru. Výkon: Vo vyššie uvedenom príklade príkaz awk vytlačí celý riadok, ktorý sa zhoduje s „správcom“. 3. Rozdelenie riadku na polia : Pre každý záznam, tj riadok, príkaz awk štandardne rozdelí záznam oddelený znakom medzery a uloží ho do premenných $n. Ak má riadok 4 slová, uloží sa v poradí $1, $2, $3 a $4. Tiež $0 predstavuje celý riadok. Výkon: Vo vyššie uvedenom príklade $1 a $4 predstavujú polia Meno a Plat. Zabudované premenné v Awk Vstavané premenné Awk zahŕňajú premenné poľa – $1, $2, $3 atď. ($0 je celý riadok) – ktoré rozdeľujú riadok textu na jednotlivé slová alebo časti nazývané polia. Príklady: Použitie vstavaných premenných NR (číslo riadku zobrazenia) Výkon: Vo vyššie uvedenom príklade príkaz awk s NR vytlačí všetky riadky spolu s číslom riadku. Použitie vstavaných premenných NF (Zobraziť posledné pole) Výkon: Vo vyššie uvedenom príklade $1 predstavuje meno a $NF predstavuje plat. Plat môžeme získať pomocou $NF , kde $NF predstavuje posledné pole. Ďalšie použitie vstavaných premenných NR (zobrazovací riadok od 3 do 6) Výkon: Ďalšie príklady Pre daný textový súbor: 1) Ak chcete vytlačiť prvú položku spolu s číslom riadku (NR) oddeleným znakom – z každého riadku v súbore geeksforgeeks.txt: 2) Ak chcete vrátiť druhý stĺpec/položku z geeksforgeeks.txt: Otázka by mala znieť: - Ak chcete vrátiť druhý stĺpec/položku z geeksforgeeks.txt: 3) Ak chcete vytlačiť akýkoľvek neprázdny riadok, ak je prítomný tu NF by nemalo byť menšie ako 0 a používateľ musí vytlačiť aj číslo riadku: správna odpoveď : awk ‘NF == 0 {print NR}’ geeksforgeeks.txt ALEBO awk ‘NF <= 0 {print NR}’ geeksforgeeks.txt 4) Ak chcete zistiť dĺžku najdlhšieho riadku v súbore: 5) Ak chcete spočítať riadky v súbore: 6) Tlač riadkov s viac ako 10 znakmi: 7) Ak chcete nájsť/skontrolovať akýkoľvek reťazec v konkrétnom stĺpci: 8) Ak chcete vytlačiť druhé mocniny prvých čísel od 1 do n, povedzte 6:
(a) Skenuje súbor riadok po riadku
(b) Rozdelí každý vstupný riadok do polí
(c) Porovnáva vstupný riadok/polia so vzorom
(d) Vykonáva činnosť (činnosti) na zhodných líniách
(a) Transformujte dátové súbory
(b) Vytvárajte formátované správy
a) Naformátujte výstupné riadky
b) Aritmetické a reťazcové operácie
c) Podmienky a slučkyawk options 'selection _criteria {action }' input-file>výstupný-súbor> -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>
$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>
$ awk '{print}' employee.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>
$ awk '/manager/ {print}' employee.txt> ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
$ awk '{print $1,$4}' employee.txt> ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
NR: Príkaz NR uchováva aktuálny počet vstupných záznamov. Pamätajte, že záznamy sú zvyčajne riadky. Príkaz Awk vykoná príkazy vzoru/akcie raz pre každý záznam v súbore. NF: Príkaz NF uchováva počet polí v rámci aktuálneho vstupného záznamu. FS: Príkaz FS obsahuje znak oddeľovača polí, ktorý sa používa na rozdelenie polí na vstupnom riadku. Predvolené je biele miesto, čo znamená medzeru a znaky tabulátora. FS možno priradiť inému znaku (zvyčajne v BEGIN), aby sa zmenil oddeľovač polí. RS: Príkaz RS ukladá znak oddeľovača aktuálneho záznamu. Keďže v predvolenom nastavení je vstupný riadok vstupným záznamom, predvoleným znakom oddeľovača záznamu je nový riadok. OFS: Príkaz OFS ukladá oddeľovač výstupných polí, ktorý oddeľuje polia, keď ich Awk vytlačí. Predvolená hodnota je prázdne miesto. Vždy, keď má tlač niekoľko parametrov oddelených čiarkami, vytlačí hodnotu OFS medzi každý parameter. ORS: Príkaz ORS ukladá oddeľovač výstupných záznamov, ktorý oddeľuje výstupné riadky, keď ich Awk vytlačí. Predvolený je znak nového riadku. print automaticky vypíše obsah ORS na konci čohokoľvek, čo sa dá vytlačiť.
$ awk '{print NR,$0}' employee.txt> 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>
$ awk '{print $1,$NF}' employee.txt> ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
$cat>geeksforgeeks.txt A B C Tarun A12 1 Muž B6 2 Praveen M42 3>
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
$ awk 'NF <0' geeksforgeeks.txt>
0>
$ awk '{ if (length($0)>max) max = dĺžka (0 $) } KONIEC { max tlač }' geeksforgeeks.txt> 13>
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
$ awk 'length($0)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>
$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt> $ 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>
$ awk '{print ,}' employee.txt> Výkon:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Vo vyššie uvedenom príklade a predstavujú polia Meno a Plat.
Zabudované premenné v Awk
Vstavané premenné Awk zahŕňajú premenné poľa – , , atď. ( Awk je skriptovací jazyk používaný na manipuláciu s údajmi a generovanie správ. Príkazový programovací jazyk awk nevyžaduje žiadne kompilovanie a umožňuje používateľovi používať premenné, číselné funkcie, reťazcové funkcie a logické operátory. Awk je pomôcka, ktorá umožňuje programátorovi písať malé, ale efektívne programy vo forme príkazov, ktoré definujú textové vzory, ktoré sa majú hľadať v každom riadku dokumentu, a akciu, ktorá sa má vykonať, keď sa nájde zhoda v dokumente. riadok. Awk sa väčšinou používa na skenovanie a spracovanie vzorov. Prehľadá jeden alebo viacero súborov, aby zistil, či obsahujú riadky, ktoré sa zhodujú so zadanými vzormi, a potom vykoná súvisiace akcie. Awk je skratka z mien vývojárov – Aho, Weinberger a Kernighan. ČO MÔŽEME ROBIŤ S AWK? 1. Operácie AWK: 2. Užitočné pre: 3. Programovacie konštrukcie: Syntax: Možnosti: Vzorové príkazy Príklad: Zvážte nasledujúci textový súbor ako vstupný súbor pre všetky nižšie uvedené prípady: 1. Predvolené správanie Awk: V predvolenom nastavení Awk vytlačí každý riadok údajov zo zadaného súboru. Výkon: Vo vyššie uvedenom príklade nie je uvedený žiadny vzor. Takže akcie sú použiteľné pre všetky riadky. Tlač akcie bez akéhokoľvek argumentu štandardne vytlačí celý riadok, takže vytlačí všetky riadky súboru bez zlyhania. 2. Vytlačte čiary, ktoré zodpovedajú danému vzoru. Výkon: Vo vyššie uvedenom príklade príkaz awk vytlačí celý riadok, ktorý sa zhoduje s „správcom“. 3. Rozdelenie riadku na polia : Pre každý záznam, tj riadok, príkaz awk štandardne rozdelí záznam oddelený znakom medzery a uloží ho do premenných $n. Ak má riadok 4 slová, uloží sa v poradí $1, $2, $3 a $4. Tiež $0 predstavuje celý riadok. Výkon: Vo vyššie uvedenom príklade $1 a $4 predstavujú polia Meno a Plat. Zabudované premenné v Awk Vstavané premenné Awk zahŕňajú premenné poľa – $1, $2, $3 atď. ($0 je celý riadok) – ktoré rozdeľujú riadok textu na jednotlivé slová alebo časti nazývané polia. Príklady: Použitie vstavaných premenných NR (číslo riadku zobrazenia) Výkon: Vo vyššie uvedenom príklade príkaz awk s NR vytlačí všetky riadky spolu s číslom riadku. Použitie vstavaných premenných NF (Zobraziť posledné pole) Výkon: Vo vyššie uvedenom príklade $1 predstavuje meno a $NF predstavuje plat. Plat môžeme získať pomocou $NF , kde $NF predstavuje posledné pole. Ďalšie použitie vstavaných premenných NR (zobrazovací riadok od 3 do 6) Výkon: Ďalšie príklady Pre daný textový súbor: 1) Ak chcete vytlačiť prvú položku spolu s číslom riadku (NR) oddeleným znakom – z každého riadku v súbore geeksforgeeks.txt: 2) Ak chcete vrátiť druhý stĺpec/položku z geeksforgeeks.txt: Otázka by mala znieť: - Ak chcete vrátiť druhý stĺpec/položku z geeksforgeeks.txt: 3) Ak chcete vytlačiť akýkoľvek neprázdny riadok, ak je prítomný tu NF by nemalo byť menšie ako 0 a používateľ musí vytlačiť aj číslo riadku: správna odpoveď : awk ‘NF == 0 {print NR}’ geeksforgeeks.txt ALEBO awk ‘NF <= 0 {print NR}’ geeksforgeeks.txt 4) Ak chcete zistiť dĺžku najdlhšieho riadku v súbore: 5) Ak chcete spočítať riadky v súbore: 6) Tlač riadkov s viac ako 10 znakmi: 7) Ak chcete nájsť/skontrolovať akýkoľvek reťazec v konkrétnom stĺpci: 8) Ak chcete vytlačiť druhé mocniny prvých čísel od 1 do n, povedzte 6:
(a) Skenuje súbor riadok po riadku
(b) Rozdelí každý vstupný riadok do polí
(c) Porovnáva vstupný riadok/polia so vzorom
(d) Vykonáva činnosť (činnosti) na zhodných líniách
(a) Transformujte dátové súbory
(b) Vytvárajte formátované správy
a) Naformátujte výstupné riadky
b) Aritmetické a reťazcové operácie
c) Podmienky a slučkyawk options 'selection _criteria {action }' input-file>výstupný-súbor> -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>
$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>
$ awk '{print}' employee.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>
$ awk '/manager/ {print}' employee.txt> ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
$ awk '{print $1,$4}' employee.txt> ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
NR: Príkaz NR uchováva aktuálny počet vstupných záznamov. Pamätajte, že záznamy sú zvyčajne riadky. Príkaz Awk vykoná príkazy vzoru/akcie raz pre každý záznam v súbore. NF: Príkaz NF uchováva počet polí v rámci aktuálneho vstupného záznamu. FS: Príkaz FS obsahuje znak oddeľovača polí, ktorý sa používa na rozdelenie polí na vstupnom riadku. Predvolené je biele miesto, čo znamená medzeru a znaky tabulátora. FS možno priradiť inému znaku (zvyčajne v BEGIN), aby sa zmenil oddeľovač polí. RS: Príkaz RS ukladá znak oddeľovača aktuálneho záznamu. Keďže v predvolenom nastavení je vstupný riadok vstupným záznamom, predvoleným znakom oddeľovača záznamu je nový riadok. OFS: Príkaz OFS ukladá oddeľovač výstupných polí, ktorý oddeľuje polia, keď ich Awk vytlačí. Predvolená hodnota je prázdne miesto. Vždy, keď má tlač niekoľko parametrov oddelených čiarkami, vytlačí hodnotu OFS medzi každý parameter. ORS: Príkaz ORS ukladá oddeľovač výstupných záznamov, ktorý oddeľuje výstupné riadky, keď ich Awk vytlačí. Predvolený je znak nového riadku. print automaticky vypíše obsah ORS na konci čohokoľvek, čo sa dá vytlačiť.
$ awk '{print NR,$0}' employee.txt> 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>
$ awk '{print $1,$NF}' employee.txt> ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
$cat>geeksforgeeks.txt A B C Tarun A12 1 Muž B6 2 Praveen M42 3>
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
$ awk 'NF <0' geeksforgeeks.txt>
0>
$ awk '{ if (length($0)>max) max = dĺžka (0 $) } KONIEC { max tlač }' geeksforgeeks.txt> 13>
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
$ awk 'length($0)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>
$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt> $ 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>
- NR: Príkaz NR uchováva aktuálny počet vstupných záznamov. Pamätajte, že záznamy sú zvyčajne riadky. Príkaz Awk vykoná príkazy vzoru/akcie raz pre každý záznam v súbore. NF: Príkaz NF uchováva počet polí v rámci aktuálneho vstupného záznamu. FS: Príkaz FS obsahuje znak oddeľovača polí, ktorý sa používa na rozdelenie polí na vstupnom riadku. Predvolené je biele miesto, čo znamená medzeru a znaky tabulátora. FS možno priradiť inému znaku (zvyčajne v BEGIN), aby sa zmenil oddeľovač polí. RS: Príkaz RS ukladá znak oddeľovača aktuálneho záznamu. Keďže v predvolenom nastavení je vstupný riadok vstupným záznamom, predvoleným znakom oddeľovača záznamu je nový riadok. OFS: Príkaz OFS ukladá oddeľovač výstupných polí, ktorý oddeľuje polia, keď ich Awk vytlačí. Predvolená hodnota je prázdne miesto. Vždy, keď má tlač niekoľko parametrov oddelených čiarkami, vytlačí hodnotu OFS medzi každý parameter. ORS: Príkaz ORS ukladá oddeľovač výstupných záznamov, ktorý oddeľuje výstupné riadky, keď ich Awk vytlačí. Predvolený je znak nového riadku. print automaticky vypíše obsah ORS na konci čohokoľvek, čo sa dá vytlačiť.
Príklady:
Použitie vstavaných premenných NR (číslo riadku zobrazenia)
$ awk '{print NR,Awk je skriptovací jazyk používaný na manipuláciu s údajmi a generovanie správ. Príkazový programovací jazyk awk nevyžaduje žiadne kompilovanie a umožňuje používateľovi používať premenné, číselné funkcie, reťazcové funkcie a logické operátory.
Awk je pomôcka, ktorá umožňuje programátorovi písať malé, ale efektívne programy vo forme príkazov, ktoré definujú textové vzory, ktoré sa majú hľadať v každom riadku dokumentu, a akciu, ktorá sa má vykonať, keď sa nájde zhoda v dokumente. riadok. Awk sa väčšinou používa na skenovanie a spracovanie vzorov. Prehľadá jeden alebo viacero súborov, aby zistil, či obsahujú riadky, ktoré sa zhodujú so zadanými vzormi, a potom vykoná súvisiace akcie.
Awk je skratka z mien vývojárov – Aho, Weinberger a Kernighan.
ČO MÔŽEME ROBIŤ S AWK?
1. Operácie AWK:
(a) Skenuje súbor riadok po riadku
(b) Rozdelí každý vstupný riadok do polí
(c) Porovnáva vstupný riadok/polia so vzorom
(d) Vykonáva činnosť (činnosti) na zhodných líniách
2. Užitočné pre:
(a) Transformujte dátové súbory
(b) Vytvárajte formátované správy
3. Programovacie konštrukcie:
a) Naformátujte výstupné riadky
b) Aritmetické a reťazcové operácie
c) Podmienky a slučky
Syntax:
awk options 'selection _criteria {action }' input-file>výstupný-súbor> 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>
Vzorové príkazy
Príklad:
Zvážte nasledujúci textový súbor ako vstupný súbor pre všetky nižšie uvedené prí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. Predvolené správanie Awk: V predvolenom nastavení Awk vytlačí každý riadok údajov zo zadaného súboru.
$ awk '{print}' employee.txt> Výkon:
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>
Vo vyššie uvedenom príklade nie je uvedený žiadny vzor. Takže akcie sú použiteľné pre všetky riadky. Tlač akcie bez akéhokoľvek argumentu štandardne vytlačí celý riadok, takže vytlačí všetky riadky súboru bez zlyhania.
2. Vytlačte čiary, ktoré zodpovedajú danému vzoru.
$ awk '/manager/ {print}' employee.txt> Výkon:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Vo vyššie uvedenom príklade príkaz awk vytlačí celý riadok, ktorý sa zhoduje s „správcom“.
3. Rozdelenie riadku na polia : Pre každý záznam, tj riadok, príkaz awk štandardne rozdelí záznam oddelený znakom medzery a uloží ho do premenných $n. Ak má riadok 4 slová, uloží sa v poradí $1, $2, $3 a $4. Tiež $0 predstavuje celý riadok.
$ awk '{print $1,$4}' employee.txt> Výkon:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Vo vyššie uvedenom príklade $1 a $4 predstavujú polia Meno a Plat.
Zabudované premenné v Awk
Vstavané premenné Awk zahŕňajú premenné poľa – $1, $2, $3 atď. ($0 je celý riadok) – ktoré rozdeľujú riadok textu na jednotlivé slová alebo časti nazývané polia.
NR: Príkaz NR uchováva aktuálny počet vstupných záznamov. Pamätajte, že záznamy sú zvyčajne riadky. Príkaz Awk vykoná príkazy vzoru/akcie raz pre každý záznam v súbore. NF: Príkaz NF uchováva počet polí v rámci aktuálneho vstupného záznamu. FS: Príkaz FS obsahuje znak oddeľovača polí, ktorý sa používa na rozdelenie polí na vstupnom riadku. Predvolené je biele miesto, čo znamená medzeru a znaky tabulátora. FS možno priradiť inému znaku (zvyčajne v BEGIN), aby sa zmenil oddeľovač polí. RS: Príkaz RS ukladá znak oddeľovača aktuálneho záznamu. Keďže v predvolenom nastavení je vstupný riadok vstupným záznamom, predvoleným znakom oddeľovača záznamu je nový riadok. OFS: Príkaz OFS ukladá oddeľovač výstupných polí, ktorý oddeľuje polia, keď ich Awk vytlačí. Predvolená hodnota je prázdne miesto. Vždy, keď má tlač niekoľko parametrov oddelených čiarkami, vytlačí hodnotu OFS medzi každý parameter. ORS: Príkaz ORS ukladá oddeľovač výstupných záznamov, ktorý oddeľuje výstupné riadky, keď ich Awk vytlačí. Predvolený je znak nového riadku. print automaticky vypíše obsah ORS na konci čohokoľvek, čo sa dá vytlačiť.
Príklady:
Použitie vstavaných premenných NR (číslo riadku zobrazenia)
$ awk '{print NR,$0}' employee.txt> Výkon:
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>
Vo vyššie uvedenom príklade príkaz awk s NR vytlačí všetky riadky spolu s číslom riadku.
Použitie vstavaných premenných NF (Zobraziť posledné pole)
$ awk '{print $1,$NF}' employee.txt> Výkon:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Vo vyššie uvedenom príklade $1 predstavuje meno a $NF predstavuje plat. Plat môžeme získať pomocou $NF , kde $NF predstavuje posledné pole.
Ďalšie použitie vstavaných premenných NR (zobrazovací riadok od 3 do 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Výkon:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Ďalšie príklady
Pre daný textový súbor:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Muž B6 2 Praveen M42 3>
1) Ak chcete vytlačiť prvú položku spolu s číslom riadku (NR) oddeleným znakom – z každého riadku v súbore geeksforgeeks.txt:
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Ak chcete vrátiť druhý stĺpec/položku z geeksforgeeks.txt:
Otázka by mala znieť: - Ak chcete vrátiť druhý stĺpec/položku z geeksforgeeks.txt:
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Ak chcete vytlačiť akýkoľvek neprázdny riadok, ak je prítomný
$ awk 'NF <0' geeksforgeeks.txt>
tu NF by nemalo byť menšie ako 0 a používateľ musí vytlačiť aj číslo riadku:
správna odpoveď : awk ‘NF == 0 {print NR}’ geeksforgeeks.txt
ALEBO
awk ‘NF <= 0 {print NR}’ geeksforgeeks.txt
0>
4) Ak chcete zistiť dĺžku najdlhšieho riadku v súbore:
$ awk '{ if (length($0)>max) max = dĺžka (0 $) } KONIEC { max tlač }' geeksforgeeks.txt> 13>
5) Ak chcete spočítať riadky v súbore:
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Tlač riadkov s viac ako 10 znakmi:
$ awk 'length($0)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>
7) Ak chcete nájsť/skontrolovať akýkoľvek reťazec v konkrétnom stĺpci:
$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt> 8) Ak chcete vytlačiť druhé mocniny prvých čísel od 1 do n, povedzte 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ýkon:
latexové písmo
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>
Vo vyššie uvedenom príklade príkaz awk s NR vytlačí všetky riadky spolu s číslom riadku.
Použitie vstavaných premenných NF (Zobraziť posledné pole)
$ awk '{print ,$NF}' employee.txt> Výkon:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Vo vyššie uvedenom príklade predstavuje meno a $NF predstavuje plat. Plat môžeme získať pomocou $NF , kde $NF predstavuje posledné pole.
Ďalšie použitie vstavaných premenných NR (zobrazovací riadok od 3 do 6)
$ awk 'NR==3, NR==6 {print NR,Awk je skriptovací jazyk používaný na manipuláciu s údajmi a generovanie správ. Príkazový programovací jazyk awk nevyžaduje žiadne kompilovanie a umožňuje používateľovi používať premenné, číselné funkcie, reťazcové funkcie a logické operátory.
Awk je pomôcka, ktorá umožňuje programátorovi písať malé, ale efektívne programy vo forme príkazov, ktoré definujú textové vzory, ktoré sa majú hľadať v každom riadku dokumentu, a akciu, ktorá sa má vykonať, keď sa nájde zhoda v dokumente. riadok. Awk sa väčšinou používa na skenovanie a spracovanie vzorov. Prehľadá jeden alebo viacero súborov, aby zistil, či obsahujú riadky, ktoré sa zhodujú so zadanými vzormi, a potom vykoná súvisiace akcie.
Awk je skratka z mien vývojárov – Aho, Weinberger a Kernighan.
ČO MÔŽEME ROBIŤ S AWK?
1. Operácie AWK:
(a) Skenuje súbor riadok po riadku
(b) Rozdelí každý vstupný riadok do polí
(c) Porovnáva vstupný riadok/polia so vzorom
(d) Vykonáva činnosť (činnosti) na zhodných líniách
2. Užitočné pre:
(a) Transformujte dátové súbory
(b) Vytvárajte formátované správy
3. Programovacie konštrukcie:
a) Naformátujte výstupné riadky
b) Aritmetické a reťazcové operácie
c) Podmienky a slučky
Syntax:
awk options 'selection _criteria {action }' input-file>výstupný-súbor> 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>
Vzorové príkazy
Príklad:
Zvážte nasledujúci textový súbor ako vstupný súbor pre všetky nižšie uvedené prí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. Predvolené správanie Awk: V predvolenom nastavení Awk vytlačí každý riadok údajov zo zadaného súboru.
$ awk '{print}' employee.txt> Výkon:
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>
Vo vyššie uvedenom príklade nie je uvedený žiadny vzor. Takže akcie sú použiteľné pre všetky riadky. Tlač akcie bez akéhokoľvek argumentu štandardne vytlačí celý riadok, takže vytlačí všetky riadky súboru bez zlyhania.
2. Vytlačte čiary, ktoré zodpovedajú danému vzoru.
$ awk '/manager/ {print}' employee.txt> Výkon:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Vo vyššie uvedenom príklade príkaz awk vytlačí celý riadok, ktorý sa zhoduje s „správcom“.
3. Rozdelenie riadku na polia : Pre každý záznam, tj riadok, príkaz awk štandardne rozdelí záznam oddelený znakom medzery a uloží ho do premenných $n. Ak má riadok 4 slová, uloží sa v poradí $1, $2, $3 a $4. Tiež $0 predstavuje celý riadok.
$ awk '{print $1,$4}' employee.txt> Výkon:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Vo vyššie uvedenom príklade $1 a $4 predstavujú polia Meno a Plat.
Zabudované premenné v Awk
Vstavané premenné Awk zahŕňajú premenné poľa – $1, $2, $3 atď. ($0 je celý riadok) – ktoré rozdeľujú riadok textu na jednotlivé slová alebo časti nazývané polia.
NR: Príkaz NR uchováva aktuálny počet vstupných záznamov. Pamätajte, že záznamy sú zvyčajne riadky. Príkaz Awk vykoná príkazy vzoru/akcie raz pre každý záznam v súbore. NF: Príkaz NF uchováva počet polí v rámci aktuálneho vstupného záznamu. FS: Príkaz FS obsahuje znak oddeľovača polí, ktorý sa používa na rozdelenie polí na vstupnom riadku. Predvolené je biele miesto, čo znamená medzeru a znaky tabulátora. FS možno priradiť inému znaku (zvyčajne v BEGIN), aby sa zmenil oddeľovač polí. RS: Príkaz RS ukladá znak oddeľovača aktuálneho záznamu. Keďže v predvolenom nastavení je vstupný riadok vstupným záznamom, predvoleným znakom oddeľovača záznamu je nový riadok. OFS: Príkaz OFS ukladá oddeľovač výstupných polí, ktorý oddeľuje polia, keď ich Awk vytlačí. Predvolená hodnota je prázdne miesto. Vždy, keď má tlač niekoľko parametrov oddelených čiarkami, vytlačí hodnotu OFS medzi každý parameter. ORS: Príkaz ORS ukladá oddeľovač výstupných záznamov, ktorý oddeľuje výstupné riadky, keď ich Awk vytlačí. Predvolený je znak nového riadku. print automaticky vypíše obsah ORS na konci čohokoľvek, čo sa dá vytlačiť.
Príklady:
Použitie vstavaných premenných NR (číslo riadku zobrazenia)
$ awk '{print NR,$0}' employee.txt> Výkon:
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>
Vo vyššie uvedenom príklade príkaz awk s NR vytlačí všetky riadky spolu s číslom riadku.
Použitie vstavaných premenných NF (Zobraziť posledné pole)
$ awk '{print $1,$NF}' employee.txt> Výkon:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Vo vyššie uvedenom príklade $1 predstavuje meno a $NF predstavuje plat. Plat môžeme získať pomocou $NF , kde $NF predstavuje posledné pole.
Ďalšie použitie vstavaných premenných NR (zobrazovací riadok od 3 do 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Výkon:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Ďalšie príklady
Pre daný textový súbor:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Muž B6 2 Praveen M42 3>
1) Ak chcete vytlačiť prvú položku spolu s číslom riadku (NR) oddeleným znakom – z každého riadku v súbore geeksforgeeks.txt:
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Ak chcete vrátiť druhý stĺpec/položku z geeksforgeeks.txt:
Otázka by mala znieť: - Ak chcete vrátiť druhý stĺpec/položku z geeksforgeeks.txt:
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Ak chcete vytlačiť akýkoľvek neprázdny riadok, ak je prítomný
$ awk 'NF <0' geeksforgeeks.txt>
tu NF by nemalo byť menšie ako 0 a používateľ musí vytlačiť aj číslo riadku:
správna odpoveď : awk ‘NF == 0 {print NR}’ geeksforgeeks.txt
ALEBO
awk ‘NF <= 0 {print NR}’ geeksforgeeks.txt
0>
4) Ak chcete zistiť dĺžku najdlhšieho riadku v súbore:
$ awk '{ if (length($0)>max) max = dĺžka (0 $) } KONIEC { max tlač }' geeksforgeeks.txt> 13>
5) Ak chcete spočítať riadky v súbore:
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Tlač riadkov s viac ako 10 znakmi:
$ awk 'length($0)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>
7) Ak chcete nájsť/skontrolovať akýkoľvek reťazec v konkrétnom stĺpci:
$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt> 8) Ak chcete vytlačiť druhé mocniny prvých čísel od 1 do n, povedzte 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ýkon:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Ďalšie príklady
Pre daný textový súbor:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Muž B6 2 Praveen M42 3>
1) Ak chcete vytlačiť prvú položku spolu s číslom riadku (NR) oddeleným znakom – z každého riadku v súbore geeksforgeeks.txt:
java switch int
$ awk '{print NR '- ' }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Ak chcete vrátiť druhý stĺpec/položku z geeksforgeeks.txt:
Otázka by mala znieť: - Ak chcete vrátiť druhý stĺpec/položku z geeksforgeeks.txt:
$ awk '{print }' geeksforgeeks.txt> B A12 B6 M42>
3) Ak chcete vytlačiť akýkoľvek neprázdny riadok, ak je prítomný
$ awk 'NF <0' geeksforgeeks.txt>
tu NF by nemalo byť menšie ako 0 a používateľ musí vytlačiť aj číslo riadku:
správna odpoveď : awk ‘NF == 0 {print NR}’ geeksforgeeks.txt
ALEBO
awk ‘NF <= 0 {print NR}’ geeksforgeeks.txt
0>
4) Ak chcete zistiť dĺžku najdlhšieho riadku v súbore:
$ awk '{ if (length(Awk je skriptovací jazyk používaný na manipuláciu s údajmi a generovanie správ. Príkazový programovací jazyk awk nevyžaduje žiadne kompilovanie a umožňuje používateľovi používať premenné, číselné funkcie, reťazcové funkcie a logické operátory.
Awk je pomôcka, ktorá umožňuje programátorovi písať malé, ale efektívne programy vo forme príkazov, ktoré definujú textové vzory, ktoré sa majú hľadať v každom riadku dokumentu, a akciu, ktorá sa má vykonať, keď sa nájde zhoda v dokumente. riadok. Awk sa väčšinou používa na skenovanie a spracovanie vzorov. Prehľadá jeden alebo viacero súborov, aby zistil, či obsahujú riadky, ktoré sa zhodujú so zadanými vzormi, a potom vykoná súvisiace akcie.
Awk je skratka z mien vývojárov – Aho, Weinberger a Kernighan.
ČO MÔŽEME ROBIŤ S AWK?
1. Operácie AWK:
(a) Skenuje súbor riadok po riadku
(b) Rozdelí každý vstupný riadok do polí
(c) Porovnáva vstupný riadok/polia so vzorom
(d) Vykonáva činnosť (činnosti) na zhodných líniách
2. Užitočné pre:
(a) Transformujte dátové súbory
(b) Vytvárajte formátované správy
3. Programovacie konštrukcie:
a) Naformátujte výstupné riadky
b) Aritmetické a reťazcové operácie
c) Podmienky a slučky
Syntax:
awk options 'selection _criteria {action }' input-file>výstupný-súbor> 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>
Vzorové príkazy
Príklad:
Zvážte nasledujúci textový súbor ako vstupný súbor pre všetky nižšie uvedené prí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. Predvolené správanie Awk: V predvolenom nastavení Awk vytlačí každý riadok údajov zo zadaného súboru.
$ awk '{print}' employee.txt> Výkon:
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>
Vo vyššie uvedenom príklade nie je uvedený žiadny vzor. Takže akcie sú použiteľné pre všetky riadky. Tlač akcie bez akéhokoľvek argumentu štandardne vytlačí celý riadok, takže vytlačí všetky riadky súboru bez zlyhania.
2. Vytlačte čiary, ktoré zodpovedajú danému vzoru.
$ awk '/manager/ {print}' employee.txt> Výkon:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Vo vyššie uvedenom príklade príkaz awk vytlačí celý riadok, ktorý sa zhoduje s „správcom“.
3. Rozdelenie riadku na polia : Pre každý záznam, tj riadok, príkaz awk štandardne rozdelí záznam oddelený znakom medzery a uloží ho do premenných $n. Ak má riadok 4 slová, uloží sa v poradí $1, $2, $3 a $4. Tiež $0 predstavuje celý riadok.
$ awk '{print $1,$4}' employee.txt> Výkon:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Vo vyššie uvedenom príklade $1 a $4 predstavujú polia Meno a Plat.
Zabudované premenné v Awk
Vstavané premenné Awk zahŕňajú premenné poľa – $1, $2, $3 atď. ($0 je celý riadok) – ktoré rozdeľujú riadok textu na jednotlivé slová alebo časti nazývané polia.
NR: Príkaz NR uchováva aktuálny počet vstupných záznamov. Pamätajte, že záznamy sú zvyčajne riadky. Príkaz Awk vykoná príkazy vzoru/akcie raz pre každý záznam v súbore. NF: Príkaz NF uchováva počet polí v rámci aktuálneho vstupného záznamu. FS: Príkaz FS obsahuje znak oddeľovača polí, ktorý sa používa na rozdelenie polí na vstupnom riadku. Predvolené je biele miesto, čo znamená medzeru a znaky tabulátora. FS možno priradiť inému znaku (zvyčajne v BEGIN), aby sa zmenil oddeľovač polí. RS: Príkaz RS ukladá znak oddeľovača aktuálneho záznamu. Keďže v predvolenom nastavení je vstupný riadok vstupným záznamom, predvoleným znakom oddeľovača záznamu je nový riadok. OFS: Príkaz OFS ukladá oddeľovač výstupných polí, ktorý oddeľuje polia, keď ich Awk vytlačí. Predvolená hodnota je prázdne miesto. Vždy, keď má tlač niekoľko parametrov oddelených čiarkami, vytlačí hodnotu OFS medzi každý parameter. ORS: Príkaz ORS ukladá oddeľovač výstupných záznamov, ktorý oddeľuje výstupné riadky, keď ich Awk vytlačí. Predvolený je znak nového riadku. print automaticky vypíše obsah ORS na konci čohokoľvek, čo sa dá vytlačiť.
Príklady:
Použitie vstavaných premenných NR (číslo riadku zobrazenia)
$ awk '{print NR,$0}' employee.txt> Výkon:
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>
Vo vyššie uvedenom príklade príkaz awk s NR vytlačí všetky riadky spolu s číslom riadku.
Použitie vstavaných premenných NF (Zobraziť posledné pole)
$ awk '{print $1,$NF}' employee.txt> Výkon:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Vo vyššie uvedenom príklade $1 predstavuje meno a $NF predstavuje plat. Plat môžeme získať pomocou $NF , kde $NF predstavuje posledné pole.
Ďalšie použitie vstavaných premenných NR (zobrazovací riadok od 3 do 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Výkon:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Ďalšie príklady
Pre daný textový súbor:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Muž B6 2 Praveen M42 3>
1) Ak chcete vytlačiť prvú položku spolu s číslom riadku (NR) oddeleným znakom – z každého riadku v súbore geeksforgeeks.txt:
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Ak chcete vrátiť druhý stĺpec/položku z geeksforgeeks.txt:
Otázka by mala znieť: - Ak chcete vrátiť druhý stĺpec/položku z geeksforgeeks.txt:
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Ak chcete vytlačiť akýkoľvek neprázdny riadok, ak je prítomný
$ awk 'NF <0' geeksforgeeks.txt>
tu NF by nemalo byť menšie ako 0 a používateľ musí vytlačiť aj číslo riadku:
správna odpoveď : awk ‘NF == 0 {print NR}’ geeksforgeeks.txt
ALEBO
awk ‘NF <= 0 {print NR}’ geeksforgeeks.txt
0>
4) Ak chcete zistiť dĺžku najdlhšieho riadku v súbore:
$ awk '{ if (length($0)>max) max = dĺžka (0 $) } KONIEC { max tlač }' geeksforgeeks.txt> 13>
5) Ak chcete spočítať riadky v súbore:
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Tlač riadkov s viac ako 10 znakmi:
$ awk 'length($0)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>
7) Ak chcete nájsť/skontrolovať akýkoľvek reťazec v konkrétnom stĺpci:
$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt> 8) Ak chcete vytlačiť druhé mocniny prvých čísel od 1 do n, povedzte 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ĺžka (0 $) } KONIEC { max tlač }' geeksforgeeks.txt> 13>
5) Ak chcete spočítať riadky v súbore:
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Tlač riadkov s viac ako 10 znakmi:
$ awk 'length()>10' geeksforgeeks.txt> Awk je skriptovací jazyk používaný na manipuláciu s údajmi a generovanie správ. Príkazový programovací jazyk awk nevyžaduje žiadne kompilovanie a umožňuje používateľovi používať premenné, číselné funkcie, reťazcové funkcie a logické operátory.
Awk je pomôcka, ktorá umožňuje programátorovi písať malé, ale efektívne programy vo forme príkazov, ktoré definujú textové vzory, ktoré sa majú hľadať v každom riadku dokumentu, a akciu, ktorá sa má vykonať, keď sa nájde zhoda v dokumente. riadok. Awk sa väčšinou používa na skenovanie a spracovanie vzorov. Prehľadá jeden alebo viacero súborov, aby zistil, či obsahujú riadky, ktoré sa zhodujú so zadanými vzormi, a potom vykoná súvisiace akcie.
Awk je skratka z mien vývojárov – Aho, Weinberger a Kernighan.
ČO MÔŽEME ROBIŤ S AWK?
1. Operácie AWK:
(a) Skenuje súbor riadok po riadku
(b) Rozdelí každý vstupný riadok do polí
(c) Porovnáva vstupný riadok/polia so vzorom
(d) Vykonáva činnosť (činnosti) na zhodných líniách2. Užitočné pre:
(a) Transformujte dátové súbory
(b) Vytvárajte formátované správy3. Programovacie konštrukcie:
a) Naformátujte výstupné riadky
b) Aritmetické a reťazcové operácie
c) Podmienky a slučkySyntax:
awk options 'selection _criteria {action }' input-file>výstupný-súbor>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>Vzorové príkazy
Príklad:
Zvážte nasledujúci textový súbor ako vstupný súbor pre všetky nižšie uvedené prí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. Predvolené správanie Awk: V predvolenom nastavení Awk vytlačí každý riadok údajov zo zadaného súboru.
$ awk '{print}' employee.txt>Výkon:
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>Vo vyššie uvedenom príklade nie je uvedený žiadny vzor. Takže akcie sú použiteľné pre všetky riadky. Tlač akcie bez akéhokoľvek argumentu štandardne vytlačí celý riadok, takže vytlačí všetky riadky súboru bez zlyhania.
2. Vytlačte čiary, ktoré zodpovedajú danému vzoru.
$ awk '/manager/ {print}' employee.txt>Výkon:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>Vo vyššie uvedenom príklade príkaz awk vytlačí celý riadok, ktorý sa zhoduje s „správcom“.
3. Rozdelenie riadku na polia : Pre každý záznam, tj riadok, príkaz awk štandardne rozdelí záznam oddelený znakom medzery a uloží ho do premenných $n. Ak má riadok 4 slová, uloží sa v poradí $1, $2, $3 a $4. Tiež $0 predstavuje celý riadok.
$ awk '{print $1,$4}' employee.txt>Výkon:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>Vo vyššie uvedenom príklade $1 a $4 predstavujú polia Meno a Plat.
Zabudované premenné v Awk
Vstavané premenné Awk zahŕňajú premenné poľa – $1, $2, $3 atď. ($0 je celý riadok) – ktoré rozdeľujú riadok textu na jednotlivé slová alebo časti nazývané polia.
NR: Príkaz NR uchováva aktuálny počet vstupných záznamov. Pamätajte, že záznamy sú zvyčajne riadky. Príkaz Awk vykoná príkazy vzoru/akcie raz pre každý záznam v súbore. NF: Príkaz NF uchováva počet polí v rámci aktuálneho vstupného záznamu. FS: Príkaz FS obsahuje znak oddeľovača polí, ktorý sa používa na rozdelenie polí na vstupnom riadku. Predvolené je biele miesto, čo znamená medzeru a znaky tabulátora. FS možno priradiť inému znaku (zvyčajne v BEGIN), aby sa zmenil oddeľovač polí. RS: Príkaz RS ukladá znak oddeľovača aktuálneho záznamu. Keďže v predvolenom nastavení je vstupný riadok vstupným záznamom, predvoleným znakom oddeľovača záznamu je nový riadok. OFS: Príkaz OFS ukladá oddeľovač výstupných polí, ktorý oddeľuje polia, keď ich Awk vytlačí. Predvolená hodnota je prázdne miesto. Vždy, keď má tlač niekoľko parametrov oddelených čiarkami, vytlačí hodnotu OFS medzi každý parameter. ORS: Príkaz ORS ukladá oddeľovač výstupných záznamov, ktorý oddeľuje výstupné riadky, keď ich Awk vytlačí. Predvolený je znak nového riadku. print automaticky vypíše obsah ORS na konci čohokoľvek, čo sa dá vytlačiť.
Príklady:
Použitie vstavaných premenných NR (číslo riadku zobrazenia)
$ awk '{print NR,$0}' employee.txt>Výkon:
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>Vo vyššie uvedenom príklade príkaz awk s NR vytlačí všetky riadky spolu s číslom riadku.
Použitie vstavaných premenných NF (Zobraziť posledné pole)
$ awk '{print $1,$NF}' employee.txt>Výkon:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>Vo vyššie uvedenom príklade $1 predstavuje meno a $NF predstavuje plat. Plat môžeme získať pomocou $NF , kde $NF predstavuje posledné pole.
Ďalšie použitie vstavaných premenných NR (zobrazovací riadok od 3 do 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt>Výkon:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>Ďalšie príklady
Pre daný textový súbor:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Muž B6 2 Praveen M42 3>1) Ak chcete vytlačiť prvú položku spolu s číslom riadku (NR) oddeleným znakom – z každého riadku v súbore geeksforgeeks.txt:
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt>1 - A 2 - Tarun 3 – Manav 4 - Praveen>2) Ak chcete vrátiť druhý stĺpec/položku z geeksforgeeks.txt:
Otázka by mala znieť: - Ak chcete vrátiť druhý stĺpec/položku z geeksforgeeks.txt:
$ awk '{print $2}' geeksforgeeks.txt>B A12 B6 M42>3) Ak chcete vytlačiť akýkoľvek neprázdny riadok, ak je prítomný
$ awk 'NF <0' geeksforgeeks.txt>tu NF by nemalo byť menšie ako 0 a používateľ musí vytlačiť aj číslo riadku:
správna odpoveď : awk ‘NF == 0 {print NR}’ geeksforgeeks.txt
ALEBO
awk ‘NF <= 0 {print NR}’ geeksforgeeks.txt
0>4) Ak chcete zistiť dĺžku najdlhšieho riadku v súbore:
$ awk '{ if (length($0)>max) max = dĺžka (0 $) } KONIEC { max tlač }' geeksforgeeks.txt>13>5) Ak chcete spočítať riadky v súbore:
$ awk 'END { print NR }' geeksforgeeks.txt>3>6) Tlač riadkov s viac ako 10 znakmi:
$ awk 'length($0)>10' geeksforgeeks.txt>Tarun A12 1 Praveen M42 3>7) Ak chcete nájsť/skontrolovať akýkoľvek reťazec v konkrétnom stĺpci:
$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt>8) Ak chcete vytlačiť druhé mocniny prvých čísel od 1 do n, povedzte 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>
Tarun A12 1 Praveen M42 3>
7) Ak chcete nájsť/skontrolovať akýkoľvek reťazec v konkrétnom stĺpci:
$ awk '{ if( == 'B6') print Awk je skriptovací jazyk používaný na manipuláciu s údajmi a generovanie správ. Príkazový programovací jazyk awk nevyžaduje žiadne kompilovanie a umožňuje používateľovi používať premenné, číselné funkcie, reťazcové funkcie a logické operátory.
Awk je pomôcka, ktorá umožňuje programátorovi písať malé, ale efektívne programy vo forme príkazov, ktoré definujú textové vzory, ktoré sa majú hľadať v každom riadku dokumentu, a akciu, ktorá sa má vykonať, keď sa nájde zhoda v dokumente. riadok. Awk sa väčšinou používa na skenovanie a spracovanie vzorov. Prehľadá jeden alebo viacero súborov, aby zistil, či obsahujú riadky, ktoré sa zhodujú so zadanými vzormi, a potom vykoná súvisiace akcie.
Awk je skratka z mien vývojárov – Aho, Weinberger a Kernighan.
ČO MÔŽEME ROBIŤ S AWK?
1. Operácie AWK:
(a) Skenuje súbor riadok po riadku
(b) Rozdelí každý vstupný riadok do polí
(c) Porovnáva vstupný riadok/polia so vzorom
(d) Vykonáva činnosť (činnosti) na zhodných líniách
2. Užitočné pre:
(a) Transformujte dátové súbory
(b) Vytvárajte formátované správy
3. Programovacie konštrukcie:
a) Naformátujte výstupné riadky
b) Aritmetické a reťazcové operácie
c) Podmienky a slučky
Syntax:
awk options 'selection _criteria {action }' input-file>výstupný-súbor> 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>
Vzorové príkazy
Príklad:
Zvážte nasledujúci textový súbor ako vstupný súbor pre všetky nižšie uvedené prí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. Predvolené správanie Awk: V predvolenom nastavení Awk vytlačí každý riadok údajov zo zadaného súboru.
$ awk '{print}' employee.txt> Výkon:
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>
Vo vyššie uvedenom príklade nie je uvedený žiadny vzor. Takže akcie sú použiteľné pre všetky riadky. Tlač akcie bez akéhokoľvek argumentu štandardne vytlačí celý riadok, takže vytlačí všetky riadky súboru bez zlyhania.
2. Vytlačte čiary, ktoré zodpovedajú danému vzoru.
$ awk '/manager/ {print}' employee.txt> Výkon:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Vo vyššie uvedenom príklade príkaz awk vytlačí celý riadok, ktorý sa zhoduje s „správcom“.
3. Rozdelenie riadku na polia : Pre každý záznam, tj riadok, príkaz awk štandardne rozdelí záznam oddelený znakom medzery a uloží ho do premenných $n. Ak má riadok 4 slová, uloží sa v poradí $1, $2, $3 a $4. Tiež $0 predstavuje celý riadok.
$ awk '{print $1,$4}' employee.txt> Výkon:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Vo vyššie uvedenom príklade $1 a $4 predstavujú polia Meno a Plat.
Zabudované premenné v Awk
Vstavané premenné Awk zahŕňajú premenné poľa – $1, $2, $3 atď. ($0 je celý riadok) – ktoré rozdeľujú riadok textu na jednotlivé slová alebo časti nazývané polia.
NR: Príkaz NR uchováva aktuálny počet vstupných záznamov. Pamätajte, že záznamy sú zvyčajne riadky. Príkaz Awk vykoná príkazy vzoru/akcie raz pre každý záznam v súbore. NF: Príkaz NF uchováva počet polí v rámci aktuálneho vstupného záznamu. FS: Príkaz FS obsahuje znak oddeľovača polí, ktorý sa používa na rozdelenie polí na vstupnom riadku. Predvolené je biele miesto, čo znamená medzeru a znaky tabulátora. FS možno priradiť inému znaku (zvyčajne v BEGIN), aby sa zmenil oddeľovač polí. RS: Príkaz RS ukladá znak oddeľovača aktuálneho záznamu. Keďže v predvolenom nastavení je vstupný riadok vstupným záznamom, predvoleným znakom oddeľovača záznamu je nový riadok. OFS: Príkaz OFS ukladá oddeľovač výstupných polí, ktorý oddeľuje polia, keď ich Awk vytlačí. Predvolená hodnota je prázdne miesto. Vždy, keď má tlač niekoľko parametrov oddelených čiarkami, vytlačí hodnotu OFS medzi každý parameter. ORS: Príkaz ORS ukladá oddeľovač výstupných záznamov, ktorý oddeľuje výstupné riadky, keď ich Awk vytlačí. Predvolený je znak nového riadku. print automaticky vypíše obsah ORS na konci čohokoľvek, čo sa dá vytlačiť.
Príklady:
Použitie vstavaných premenných NR (číslo riadku zobrazenia)
$ awk '{print NR,$0}' employee.txt> Výkon:
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>
Vo vyššie uvedenom príklade príkaz awk s NR vytlačí všetky riadky spolu s číslom riadku.
Použitie vstavaných premenných NF (Zobraziť posledné pole)
$ awk '{print $1,$NF}' employee.txt> Výkon:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Vo vyššie uvedenom príklade $1 predstavuje meno a $NF predstavuje plat. Plat môžeme získať pomocou $NF , kde $NF predstavuje posledné pole.
Ďalšie použitie vstavaných premenných NR (zobrazovací riadok od 3 do 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Výkon:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Ďalšie príklady
Pre daný textový súbor:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Muž B6 2 Praveen M42 3>
1) Ak chcete vytlačiť prvú položku spolu s číslom riadku (NR) oddeleným znakom – z každého riadku v súbore geeksforgeeks.txt:
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Ak chcete vrátiť druhý stĺpec/položku z geeksforgeeks.txt:
Otázka by mala znieť: - Ak chcete vrátiť druhý stĺpec/položku z geeksforgeeks.txt:
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Ak chcete vytlačiť akýkoľvek neprázdny riadok, ak je prítomný
$ awk 'NF <0' geeksforgeeks.txt>
tu NF by nemalo byť menšie ako 0 a používateľ musí vytlačiť aj číslo riadku:
správna odpoveď : awk ‘NF == 0 {print NR}’ geeksforgeeks.txt
ALEBO
awk ‘NF <= 0 {print NR}’ geeksforgeeks.txt
0>
4) Ak chcete zistiť dĺžku najdlhšieho riadku v súbore:
$ awk '{ if (length($0)>max) max = dĺžka (0 $) } KONIEC { max tlač }' geeksforgeeks.txt> 13>
5) Ak chcete spočítať riadky v súbore:
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Tlač riadkov s viac ako 10 znakmi:
$ awk 'length($0)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>
7) Ak chcete nájsť/skontrolovať akýkoľvek reťazec v konkrétnom stĺpci:
$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt> 8) Ak chcete vytlačiť druhé mocniny prvých čísel od 1 do n, povedzte 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) Ak chcete vytlačiť druhé mocniny prvých čísel od 1 do n, povedzte 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>