Awk ir skriptu valoda, ko izmanto datu manipulēšanai un atskaišu ģenerēšanai. awk komandu programmēšanas valodai nav nepieciešama kompilēšana, un tā ļauj lietotājam izmantot mainīgos, ciparu funkcijas, virkņu funkcijas un loģiskos operatorus.
Awk ir utilīta, kas programmētājam ļauj rakstīt nelielas, bet efektīvas programmas paziņojumu veidā, kas definē teksta modeļus, kas jāmeklē katrā dokumenta rindiņā, un darbību, kas jāveic, ja tiek atrasta atbilstība. līnija. Awk galvenokārt tiek izmantots rakstu skenēšanai un apstrādei. Tā meklē vienu vai vairākus failus, lai noskaidrotu, vai tajos ir rindas, kas atbilst norādītajiem modeļiem, un pēc tam veic saistītās darbības.
Awk ir saīsināts no izstrādātāju vārdiem – Aho, Weinberger un Kernighan.
KO VAR DARĪT AR AWK?
1. AWK darbības:
(a) Skenē failu pēc rindas
(b) sadala katru ievades rindiņu laukos
(c) Salīdzina ievades līniju/laukus ar modeli
(d) veic darbību(s) saskaņotajās līnijās
attēla izlīdzināšana css
2. Noderīga:
(a) Pārveidojiet datu failus
b) sagatavot formatētus pārskatus
3. Programmēšanas konstrukcijas:
a) Formatējiet izvadlīnijas
b) Aritmētiskās un virkņu darbības
c) nosacījumi un cilpas
Sintakse:
awk options 'selection _criteria {action }' input-file>izvades fails> Iespējas:
-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>
Komandu paraugi
Piemērs:
Apsveriet šādu teksta failu kā ievades failu visos tālāk norādītajos gadījumos.
$cat>darbinieks.txt>>$ awk '{print}' employee.txt>
Izvade:
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>
Iepriekš minētajā piemērā modelis nav norādīts. Tātad darbības attiecas uz visām līnijām. Darbības drukāšana bez argumentiem pēc noklusējuma izdrukā visu rindiņu, tāpēc bez kļūmēm tiek izdrukātas visas faila rindas.
2. Izdrukājiet līnijas, kas atbilst dotajam rakstam.
$ awk '/manager/ {print}' employee.txt> Izvade:
java pamati
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Iepriekš minētajā piemērā komanda awk izdrukā visu rindu, kas atbilst “pārvaldniekam”.
3. Līnijas sadalīšana laukos: Katram ierakstam, t.i., rindai, komanda awk pēc noklusējuma sadala ierakstu, kas atdalīts ar atstarpes rakstzīmi, un saglabā to mainīgajos $n. Ja rindā ir 4 vārdi, tā tiks saglabāta attiecīgi , , un . Turklāt 0 $ apzīmē visu līniju.
$ awk '{print ,}' employee.txt> Izvade:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Iepriekš minētajā piemērā un apzīmē attiecīgi laukus Vārds un Alga.
sarakstu kārtot pēc java
Awk iebūvētie mainīgie
Awk iebūvētie mainīgie ietver lauka mainīgos — , , un tā tālāk ( Awk ir skriptu valoda, ko izmanto datu manipulēšanai un atskaišu ģenerēšanai. awk komandu programmēšanas valodai nav nepieciešama kompilēšana, un tā ļauj lietotājam izmantot mainīgos, ciparu funkcijas, virkņu funkcijas un loģiskos operatorus. Awk ir utilīta, kas programmētājam ļauj rakstīt nelielas, bet efektīvas programmas paziņojumu veidā, kas definē teksta modeļus, kas jāmeklē katrā dokumenta rindiņā, un darbību, kas jāveic, ja tiek atrasta atbilstība. līnija. Awk galvenokārt tiek izmantots rakstu skenēšanai un apstrādei. Tā meklē vienu vai vairākus failus, lai noskaidrotu, vai tajos ir rindas, kas atbilst norādītajiem modeļiem, un pēc tam veic saistītās darbības. Awk ir saīsināts no izstrādātāju vārdiem – Aho, Weinberger un Kernighan. KO VAR DARĪT AR AWK? 1. AWK darbības: 2. Noderīga: 3. Programmēšanas konstrukcijas: Sintakse: Iespējas: Komandu paraugi Piemērs: Apsveriet šādu teksta failu kā ievades failu visos tālāk norādītajos gadījumos. Izvade: Iepriekš minētajā piemērā modelis nav norādīts. Tātad darbības attiecas uz visām līnijām. Darbības drukāšana bez argumentiem pēc noklusējuma izdrukā visu rindiņu, tāpēc bez kļūmēm tiek izdrukātas visas faila rindas. 2. Izdrukājiet līnijas, kas atbilst dotajam rakstam. Izvade: Iepriekš minētajā piemērā komanda awk izdrukā visu rindu, kas atbilst “pārvaldniekam”. 3. Līnijas sadalīšana laukos: Katram ierakstam, t.i., rindai, komanda awk pēc noklusējuma sadala ierakstu, kas atdalīts ar atstarpes rakstzīmi, un saglabā to mainīgajos $n. Ja rindā ir 4 vārdi, tā tiks saglabāta attiecīgi $1, $2, $3 un $4. Turklāt 0 $ apzīmē visu līniju. Izvade: Iepriekš minētajā piemērā $1 un $4 apzīmē attiecīgi laukus Vārds un Alga. Awk iebūvētie mainīgie Awk iebūvētie mainīgie ietver lauka mainīgos — $1, $2, $3 un tā tālāk ($0 ir visa rindiņa), kas sadala teksta rindiņu atsevišķos vārdos vai daļās, ko sauc par laukiem. Piemēri: NR iebūvēto mainīgo izmantošana (Display Line Number) Izvade: Iepriekš minētajā piemērā komanda awk ar NR izdrukā visas rindas kopā ar rindas numuru. NF iebūvēto mainīgo izmantošana (rādīt pēdējo lauku) Izvade: Iepriekš minētajā piemērā $1 apzīmē vārdu un $NF apzīmē algu. Mēs varam iegūt algu, izmantojot $NF , kur $NF apzīmē pēdējo lauku. Vēl viens NR iebūvēto mainīgo lietojums (displeja līnija no 3 līdz 6) Izvade: Vairāk piemēru Dotajam teksta failam: 1) Lai drukātu pirmo vienumu kopā ar rindas numuru (NR), kas atdalīts ar – no katras rindiņas failā geeksforgeeks.txt: 2) Lai atgrieztu otro kolonnu/vienumu no faila geeksforgeeks.txt: Jautājumam jābūt šādam:- Lai atgrieztu otro kolonnu/vienumu no faila geeksforgeeks.txt: 3) Lai izdrukātu jebkuru rindiņu, kas nav tukša, ja tāda ir šeit NF jābūt ne mazākam par 0 un lietotājam ir jādrukā arī rindas numurs: pareizā atbilde: awk ‘NF == 0 {print NR}’ geeksforgeeks.txt VAI awk 'NF <= 0 {print NR}' geeksforgeeks.txt 4) Lai atrastu failā esošās garākās rindas garumu: 5) Lai saskaitītu rindiņas failā: 6) Drukāšanas līnijas ar vairāk nekā 10 rakstzīmēm: 7) Lai atrastu/pārbaudītu jebkuru virkni jebkurā konkrētā kolonnā: 8) Lai izdrukātu pirmo skaitļu kvadrātus no 1 līdz n, sakiet 6:
(a) Skenē failu pēc rindas
(b) sadala katru ievades rindiņu laukos
(c) Salīdzina ievades līniju/laukus ar modeli
(d) veic darbību(s) saskaņotajās līnijās
(a) Pārveidojiet datu failus
b) sagatavot formatētus pārskatus
a) Formatējiet izvadlīnijas
b) Aritmētiskās un virkņu darbības
c) nosacījumi un cilpasawk options 'selection _criteria {action }' input-file>izvades fails> -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>darbinieks.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: komanda NR saglabā pašreizējo ievades ierakstu skaitu. Atcerieties, ka ieraksti parasti ir līnijas. Komanda Awk izpilda modeļa/darbības paziņojumus vienu reizi katram faila ierakstam. NF: NF komanda uzskaita lauku skaitu pašreizējā ievades ierakstā. FS: FS komanda satur lauka atdalīšanas rakstzīmi, ko izmanto, lai sadalītu laukus ievades rindā. Noklusējums ir atstarpe, kas nozīmē atstarpes un tabulēšanas rakstzīmes. FS var piešķirt citai rakstzīmei (parasti BEGIN), lai mainītu lauka atdalītāju. RS: RS komanda saglabā pašreizējā ieraksta atdalīšanas rakstzīmi. Tā kā pēc noklusējuma ievades rindiņa ir ievades ieraksts, noklusējuma ieraksta atdalīšanas rakstzīme ir jauna rindiņa. OFS: komanda OFS saglabā izvades lauku atdalītāju, kas atdala laukus, kad Awk tos drukā. Pēc noklusējuma ir tukša vieta. Ja drukā ir vairāki parametri, kas atdalīti ar komatiem, starp katru parametru tiek drukāta OFS vērtība. ORS: komanda ORS saglabā izvades ieraksta atdalītāju, kas atdala izvadlīnijas, kad Awk tās drukā. Noklusējums ir jaunrindas rakstzīme. print automātiski izvada ORS saturu neatkarīgi no tā, kas ir dots drukāšanai.
$ 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 Man 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 = garums($0) } END { print max }' 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: komanda NR saglabā pašreizējo ievades ierakstu skaitu. Atcerieties, ka ieraksti parasti ir līnijas. Komanda Awk izpilda modeļa/darbības paziņojumus vienu reizi katram faila ierakstam. NF: NF komanda uzskaita lauku skaitu pašreizējā ievades ierakstā. FS: FS komanda satur lauka atdalīšanas rakstzīmi, ko izmanto, lai sadalītu laukus ievades rindā. Noklusējums ir atstarpe, kas nozīmē atstarpes un tabulēšanas rakstzīmes. FS var piešķirt citai rakstzīmei (parasti BEGIN), lai mainītu lauka atdalītāju. RS: RS komanda saglabā pašreizējā ieraksta atdalīšanas rakstzīmi. Tā kā pēc noklusējuma ievades rindiņa ir ievades ieraksts, noklusējuma ieraksta atdalīšanas rakstzīme ir jauna rindiņa. OFS: komanda OFS saglabā izvades lauku atdalītāju, kas atdala laukus, kad Awk tos drukā. Pēc noklusējuma ir tukša vieta. Ja drukā ir vairāki parametri, kas atdalīti ar komatiem, starp katru parametru tiek drukāta OFS vērtība. ORS: komanda ORS saglabā izvades ieraksta atdalītāju, kas atdala izvadlīnijas, kad Awk tās drukā. Noklusējums ir jaunrindas rakstzīme. print automātiski izvada ORS saturu neatkarīgi no tā, kas ir dots drukāšanai.
Piemēri:
NR iebūvēto mainīgo izmantošana (Display Line Number)
$ awk '{print NR,Awk ir skriptu valoda, ko izmanto datu manipulēšanai un atskaišu ģenerēšanai. awk komandu programmēšanas valodai nav nepieciešama kompilēšana, un tā ļauj lietotājam izmantot mainīgos, ciparu funkcijas, virkņu funkcijas un loģiskos operatorus.
Awk ir utilīta, kas programmētājam ļauj rakstīt nelielas, bet efektīvas programmas paziņojumu veidā, kas definē teksta modeļus, kas jāmeklē katrā dokumenta rindiņā, un darbību, kas jāveic, ja tiek atrasta atbilstība. līnija. Awk galvenokārt tiek izmantots rakstu skenēšanai un apstrādei. Tā meklē vienu vai vairākus failus, lai noskaidrotu, vai tajos ir rindas, kas atbilst norādītajiem modeļiem, un pēc tam veic saistītās darbības.
Awk ir saīsināts no izstrādātāju vārdiem – Aho, Weinberger un Kernighan.
KO VAR DARĪT AR AWK?
1. AWK darbības:
(a) Skenē failu pēc rindas
(b) sadala katru ievades rindiņu laukos
(c) Salīdzina ievades līniju/laukus ar modeli
(d) veic darbību(s) saskaņotajās līnijās
2. Noderīga:
(a) Pārveidojiet datu failus
b) sagatavot formatētus pārskatus
3. Programmēšanas konstrukcijas:
a) Formatējiet izvadlīnijas
b) Aritmētiskās un virkņu darbības
c) nosacījumi un cilpas
Sintakse:
awk options 'selection _criteria {action }' input-file>izvades fails> Iespējas:
-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>
Komandu paraugi
Piemērs:
Apsveriet šādu teksta failu kā ievades failu visos tālāk norādītajos gadījumos.
$cat>darbinieks.txt>> $ awk '{print}' employee.txt>
Izvade:
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>
Iepriekš minētajā piemērā modelis nav norādīts. Tātad darbības attiecas uz visām līnijām. Darbības drukāšana bez argumentiem pēc noklusējuma izdrukā visu rindiņu, tāpēc bez kļūmēm tiek izdrukātas visas faila rindas.
2. Izdrukājiet līnijas, kas atbilst dotajam rakstam.
$ awk '/manager/ {print}' employee.txt> Izvade:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Iepriekš minētajā piemērā komanda awk izdrukā visu rindu, kas atbilst “pārvaldniekam”.
3. Līnijas sadalīšana laukos: Katram ierakstam, t.i., rindai, komanda awk pēc noklusējuma sadala ierakstu, kas atdalīts ar atstarpes rakstzīmi, un saglabā to mainīgajos $n. Ja rindā ir 4 vārdi, tā tiks saglabāta attiecīgi $1, $2, $3 un $4. Turklāt 0 $ apzīmē visu līniju.
$ awk '{print $1,$4}' employee.txt> Izvade:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Iepriekš minētajā piemērā $1 un $4 apzīmē attiecīgi laukus Vārds un Alga.
Awk iebūvētie mainīgie
Awk iebūvētie mainīgie ietver lauka mainīgos — $1, $2, $3 un tā tālāk ($0 ir visa rindiņa), kas sadala teksta rindiņu atsevišķos vārdos vai daļās, ko sauc par laukiem.
NR: komanda NR saglabā pašreizējo ievades ierakstu skaitu. Atcerieties, ka ieraksti parasti ir līnijas. Komanda Awk izpilda modeļa/darbības paziņojumus vienu reizi katram faila ierakstam. NF: NF komanda uzskaita lauku skaitu pašreizējā ievades ierakstā. FS: FS komanda satur lauka atdalīšanas rakstzīmi, ko izmanto, lai sadalītu laukus ievades rindā. Noklusējums ir atstarpe, kas nozīmē atstarpes un tabulēšanas rakstzīmes. FS var piešķirt citai rakstzīmei (parasti BEGIN), lai mainītu lauka atdalītāju. RS: RS komanda saglabā pašreizējā ieraksta atdalīšanas rakstzīmi. Tā kā pēc noklusējuma ievades rindiņa ir ievades ieraksts, noklusējuma ieraksta atdalīšanas rakstzīme ir jauna rindiņa. OFS: komanda OFS saglabā izvades lauku atdalītāju, kas atdala laukus, kad Awk tos drukā. Pēc noklusējuma ir tukša vieta. Ja drukā ir vairāki parametri, kas atdalīti ar komatiem, starp katru parametru tiek drukāta OFS vērtība. ORS: komanda ORS saglabā izvades ieraksta atdalītāju, kas atdala izvadlīnijas, kad Awk tās drukā. Noklusējums ir jaunrindas rakstzīme. print automātiski izvada ORS saturu neatkarīgi no tā, kas ir dots drukāšanai.
Piemēri:
NR iebūvēto mainīgo izmantošana (Display Line Number)
$ awk '{print NR,$0}' employee.txt> Izvade:
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>
Iepriekš minētajā piemērā komanda awk ar NR izdrukā visas rindas kopā ar rindas numuru.
NF iebūvēto mainīgo izmantošana (rādīt pēdējo lauku)
$ awk '{print $1,$NF}' employee.txt> Izvade:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Iepriekš minētajā piemērā $1 apzīmē vārdu un $NF apzīmē algu. Mēs varam iegūt algu, izmantojot $NF , kur $NF apzīmē pēdējo lauku.
Vēl viens NR iebūvēto mainīgo lietojums (displeja līnija no 3 līdz 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Izvade:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Vairāk piemēru
Dotajam teksta failam:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>
1) Lai drukātu pirmo vienumu kopā ar rindas numuru (NR), kas atdalīts ar – no katras rindiņas failā geeksforgeeks.txt:
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Lai atgrieztu otro kolonnu/vienumu no faila geeksforgeeks.txt:
Jautājumam jābūt šādam:- Lai atgrieztu otro kolonnu/vienumu no faila geeksforgeeks.txt:
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Lai izdrukātu jebkuru rindiņu, kas nav tukša, ja tāda ir
$ awk 'NF <0' geeksforgeeks.txt>
šeit NF jābūt ne mazākam par 0 un lietotājam ir jādrukā arī rindas numurs:
pareizā atbilde: awk ‘NF == 0 {print NR}’ geeksforgeeks.txt
VAI
awk 'NF <= 0 {print NR}' geeksforgeeks.txt
0>
4) Lai atrastu failā esošās garākās rindas garumu:
$ awk '{ if (length($0)>max) max = garums($0) } END { print max }' geeksforgeeks.txt> 13>
5) Lai saskaitītu rindiņas failā:
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Drukāšanas līnijas ar vairāk nekā 10 rakstzīmēm:
$ awk 'length($0)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>
7) Lai atrastu/pārbaudītu jebkuru virkni jebkurā konkrētā kolonnā:
$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt> 8) Lai izdrukātu pirmo skaitļu kvadrātus no 1 līdz n, sakiet 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> Izvade:
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>
Iepriekš minētajā piemērā komanda awk ar NR izdrukā visas rindas kopā ar rindas numuru.
NF iebūvēto mainīgo izmantošana (rādīt pēdējo lauku)
$ awk '{print ,$NF}' employee.txt> Izvade:
binārās meklēšanas koka piemērs
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Iepriekš minētajā piemērā apzīmē vārdu un $NF apzīmē algu. Mēs varam iegūt algu, izmantojot $NF , kur $NF apzīmē pēdējo lauku.
Vēl viens NR iebūvēto mainīgo lietojums (displeja līnija no 3 līdz 6)
$ awk 'NR==3, NR==6 {print NR,Awk ir skriptu valoda, ko izmanto datu manipulēšanai un atskaišu ģenerēšanai. awk komandu programmēšanas valodai nav nepieciešama kompilēšana, un tā ļauj lietotājam izmantot mainīgos, ciparu funkcijas, virkņu funkcijas un loģiskos operatorus.
Awk ir utilīta, kas programmētājam ļauj rakstīt nelielas, bet efektīvas programmas paziņojumu veidā, kas definē teksta modeļus, kas jāmeklē katrā dokumenta rindiņā, un darbību, kas jāveic, ja tiek atrasta atbilstība. līnija. Awk galvenokārt tiek izmantots rakstu skenēšanai un apstrādei. Tā meklē vienu vai vairākus failus, lai noskaidrotu, vai tajos ir rindas, kas atbilst norādītajiem modeļiem, un pēc tam veic saistītās darbības.
Awk ir saīsināts no izstrādātāju vārdiem – Aho, Weinberger un Kernighan.
KO VAR DARĪT AR AWK?
1. AWK darbības:
(a) Skenē failu pēc rindas
(b) sadala katru ievades rindiņu laukos
(c) Salīdzina ievades līniju/laukus ar modeli
(d) veic darbību(s) saskaņotajās līnijās
2. Noderīga:
(a) Pārveidojiet datu failus
b) sagatavot formatētus pārskatus
3. Programmēšanas konstrukcijas:
a) Formatējiet izvadlīnijas
b) Aritmētiskās un virkņu darbības
c) nosacījumi un cilpas
Sintakse:
awk options 'selection _criteria {action }' input-file>izvades fails> Iespējas:
-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>
Komandu paraugi
Piemērs:
Apsveriet šādu teksta failu kā ievades failu visos tālāk norādītajos gadījumos.
$cat>darbinieks.txt>> $ awk '{print}' employee.txt>
Izvade:
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>
Iepriekš minētajā piemērā modelis nav norādīts. Tātad darbības attiecas uz visām līnijām. Darbības drukāšana bez argumentiem pēc noklusējuma izdrukā visu rindiņu, tāpēc bez kļūmēm tiek izdrukātas visas faila rindas.
2. Izdrukājiet līnijas, kas atbilst dotajam rakstam.
$ awk '/manager/ {print}' employee.txt> Izvade:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Iepriekš minētajā piemērā komanda awk izdrukā visu rindu, kas atbilst “pārvaldniekam”.
3. Līnijas sadalīšana laukos: Katram ierakstam, t.i., rindai, komanda awk pēc noklusējuma sadala ierakstu, kas atdalīts ar atstarpes rakstzīmi, un saglabā to mainīgajos $n. Ja rindā ir 4 vārdi, tā tiks saglabāta attiecīgi $1, $2, $3 un $4. Turklāt 0 $ apzīmē visu līniju.
$ awk '{print $1,$4}' employee.txt> Izvade:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Iepriekš minētajā piemērā $1 un $4 apzīmē attiecīgi laukus Vārds un Alga.
Awk iebūvētie mainīgie
Awk iebūvētie mainīgie ietver lauka mainīgos — $1, $2, $3 un tā tālāk ($0 ir visa rindiņa), kas sadala teksta rindiņu atsevišķos vārdos vai daļās, ko sauc par laukiem.
NR: komanda NR saglabā pašreizējo ievades ierakstu skaitu. Atcerieties, ka ieraksti parasti ir līnijas. Komanda Awk izpilda modeļa/darbības paziņojumus vienu reizi katram faila ierakstam. NF: NF komanda uzskaita lauku skaitu pašreizējā ievades ierakstā. FS: FS komanda satur lauka atdalīšanas rakstzīmi, ko izmanto, lai sadalītu laukus ievades rindā. Noklusējums ir atstarpe, kas nozīmē atstarpes un tabulēšanas rakstzīmes. FS var piešķirt citai rakstzīmei (parasti BEGIN), lai mainītu lauka atdalītāju. RS: RS komanda saglabā pašreizējā ieraksta atdalīšanas rakstzīmi. Tā kā pēc noklusējuma ievades rindiņa ir ievades ieraksts, noklusējuma ieraksta atdalīšanas rakstzīme ir jauna rindiņa. OFS: komanda OFS saglabā izvades lauku atdalītāju, kas atdala laukus, kad Awk tos drukā. Pēc noklusējuma ir tukša vieta. Ja drukā ir vairāki parametri, kas atdalīti ar komatiem, starp katru parametru tiek drukāta OFS vērtība. ORS: komanda ORS saglabā izvades ieraksta atdalītāju, kas atdala izvadlīnijas, kad Awk tās drukā. Noklusējums ir jaunrindas rakstzīme. print automātiski izvada ORS saturu neatkarīgi no tā, kas ir dots drukāšanai.
Piemēri:
NR iebūvēto mainīgo izmantošana (Display Line Number)
$ awk '{print NR,$0}' employee.txt> Izvade:
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>
Iepriekš minētajā piemērā komanda awk ar NR izdrukā visas rindas kopā ar rindas numuru.
NF iebūvēto mainīgo izmantošana (rādīt pēdējo lauku)
$ awk '{print $1,$NF}' employee.txt> Izvade:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Iepriekš minētajā piemērā $1 apzīmē vārdu un $NF apzīmē algu. Mēs varam iegūt algu, izmantojot $NF , kur $NF apzīmē pēdējo lauku.
Vēl viens NR iebūvēto mainīgo lietojums (displeja līnija no 3 līdz 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Izvade:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Vairāk piemēru
Dotajam teksta failam:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>
1) Lai drukātu pirmo vienumu kopā ar rindas numuru (NR), kas atdalīts ar – no katras rindiņas failā geeksforgeeks.txt:
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Lai atgrieztu otro kolonnu/vienumu no faila geeksforgeeks.txt:
Jautājumam jābūt šādam:- Lai atgrieztu otro kolonnu/vienumu no faila geeksforgeeks.txt:
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Lai izdrukātu jebkuru rindiņu, kas nav tukša, ja tāda ir
$ awk 'NF <0' geeksforgeeks.txt>
šeit NF jābūt ne mazākam par 0 un lietotājam ir jādrukā arī rindas numurs:
pareizā atbilde: awk ‘NF == 0 {print NR}’ geeksforgeeks.txt
VAI
awk 'NF <= 0 {print NR}' geeksforgeeks.txt
0>
4) Lai atrastu failā esošās garākās rindas garumu:
$ awk '{ if (length($0)>max) max = garums($0) } END { print max }' geeksforgeeks.txt> 13>
5) Lai saskaitītu rindiņas failā:
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Drukāšanas līnijas ar vairāk nekā 10 rakstzīmēm:
$ awk 'length($0)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>
7) Lai atrastu/pārbaudītu jebkuru virkni jebkurā konkrētā kolonnā:
$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt> 8) Lai izdrukātu pirmo skaitļu kvadrātus no 1 līdz n, sakiet 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> Izvade:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Vairāk piemēru
Dotajam teksta failam:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>
1) Lai drukātu pirmo vienumu kopā ar rindas numuru (NR), kas atdalīts ar – no katras rindiņas failā geeksforgeeks.txt:
$ awk '{print NR '- ' }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Lai atgrieztu otro kolonnu/vienumu no faila geeksforgeeks.txt:
Jautājumam jābūt šādam:- Lai atgrieztu otro kolonnu/vienumu no faila geeksforgeeks.txt:
$ awk '{print }' geeksforgeeks.txt> B A12 B6 M42>
3) Lai izdrukātu jebkuru rindiņu, kas nav tukša, ja tāda ir
java salīdzinājums
$ awk 'NF <0' geeksforgeeks.txt>
šeit NF jābūt ne mazākam par 0 un lietotājam ir jādrukā arī rindas numurs:
pareizā atbilde: awk ‘NF == 0 {print NR}’ geeksforgeeks.txt
VAI
awk 'NF <= 0 {print NR}' geeksforgeeks.txt
0>
4) Lai atrastu failā esošās garākās rindas garumu:
$ awk '{ if (length(Awk ir skriptu valoda, ko izmanto datu manipulēšanai un atskaišu ģenerēšanai. awk komandu programmēšanas valodai nav nepieciešama kompilēšana, un tā ļauj lietotājam izmantot mainīgos, ciparu funkcijas, virkņu funkcijas un loģiskos operatorus.
Awk ir utilīta, kas programmētājam ļauj rakstīt nelielas, bet efektīvas programmas paziņojumu veidā, kas definē teksta modeļus, kas jāmeklē katrā dokumenta rindiņā, un darbību, kas jāveic, ja tiek atrasta atbilstība. līnija. Awk galvenokārt tiek izmantots rakstu skenēšanai un apstrādei. Tā meklē vienu vai vairākus failus, lai noskaidrotu, vai tajos ir rindas, kas atbilst norādītajiem modeļiem, un pēc tam veic saistītās darbības.
Awk ir saīsināts no izstrādātāju vārdiem – Aho, Weinberger un Kernighan.
KO VAR DARĪT AR AWK?
1. AWK darbības:
(a) Skenē failu pēc rindas
(b) sadala katru ievades rindiņu laukos
(c) Salīdzina ievades līniju/laukus ar modeli
(d) veic darbību(s) saskaņotajās līnijās
2. Noderīga:
(a) Pārveidojiet datu failus
b) sagatavot formatētus pārskatus
3. Programmēšanas konstrukcijas:
a) Formatējiet izvadlīnijas
b) Aritmētiskās un virkņu darbības
c) nosacījumi un cilpas
Sintakse:
awk options 'selection _criteria {action }' input-file>izvades fails> Iespējas:
-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>
Komandu paraugi
Piemērs:
Apsveriet šādu teksta failu kā ievades failu visos tālāk norādītajos gadījumos.
$cat>darbinieks.txt>> $ awk '{print}' employee.txt>
Izvade:
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>
Iepriekš minētajā piemērā modelis nav norādīts. Tātad darbības attiecas uz visām līnijām. Darbības drukāšana bez argumentiem pēc noklusējuma izdrukā visu rindiņu, tāpēc bez kļūmēm tiek izdrukātas visas faila rindas.
2. Izdrukājiet līnijas, kas atbilst dotajam rakstam.
$ awk '/manager/ {print}' employee.txt> Izvade:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Iepriekš minētajā piemērā komanda awk izdrukā visu rindu, kas atbilst “pārvaldniekam”.
3. Līnijas sadalīšana laukos: Katram ierakstam, t.i., rindai, komanda awk pēc noklusējuma sadala ierakstu, kas atdalīts ar atstarpes rakstzīmi, un saglabā to mainīgajos $n. Ja rindā ir 4 vārdi, tā tiks saglabāta attiecīgi $1, $2, $3 un $4. Turklāt 0 $ apzīmē visu līniju.
$ awk '{print $1,$4}' employee.txt> Izvade:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Iepriekš minētajā piemērā $1 un $4 apzīmē attiecīgi laukus Vārds un Alga.
Awk iebūvētie mainīgie
Awk iebūvētie mainīgie ietver lauka mainīgos — $1, $2, $3 un tā tālāk ($0 ir visa rindiņa), kas sadala teksta rindiņu atsevišķos vārdos vai daļās, ko sauc par laukiem.
NR: komanda NR saglabā pašreizējo ievades ierakstu skaitu. Atcerieties, ka ieraksti parasti ir līnijas. Komanda Awk izpilda modeļa/darbības paziņojumus vienu reizi katram faila ierakstam. NF: NF komanda uzskaita lauku skaitu pašreizējā ievades ierakstā. FS: FS komanda satur lauka atdalīšanas rakstzīmi, ko izmanto, lai sadalītu laukus ievades rindā. Noklusējums ir atstarpe, kas nozīmē atstarpes un tabulēšanas rakstzīmes. FS var piešķirt citai rakstzīmei (parasti BEGIN), lai mainītu lauka atdalītāju. RS: RS komanda saglabā pašreizējā ieraksta atdalīšanas rakstzīmi. Tā kā pēc noklusējuma ievades rindiņa ir ievades ieraksts, noklusējuma ieraksta atdalīšanas rakstzīme ir jauna rindiņa. OFS: komanda OFS saglabā izvades lauku atdalītāju, kas atdala laukus, kad Awk tos drukā. Pēc noklusējuma ir tukša vieta. Ja drukā ir vairāki parametri, kas atdalīti ar komatiem, starp katru parametru tiek drukāta OFS vērtība. ORS: komanda ORS saglabā izvades ieraksta atdalītāju, kas atdala izvadlīnijas, kad Awk tās drukā. Noklusējums ir jaunrindas rakstzīme. print automātiski izvada ORS saturu neatkarīgi no tā, kas ir dots drukāšanai.
Piemēri:
NR iebūvēto mainīgo izmantošana (Display Line Number)
$ awk '{print NR,$0}' employee.txt> Izvade:
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>
Iepriekš minētajā piemērā komanda awk ar NR izdrukā visas rindas kopā ar rindas numuru.
NF iebūvēto mainīgo izmantošana (rādīt pēdējo lauku)
$ awk '{print $1,$NF}' employee.txt> Izvade:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Iepriekš minētajā piemērā $1 apzīmē vārdu un $NF apzīmē algu. Mēs varam iegūt algu, izmantojot $NF , kur $NF apzīmē pēdējo lauku.
Vēl viens NR iebūvēto mainīgo lietojums (displeja līnija no 3 līdz 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Izvade:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Vairāk piemēru
Dotajam teksta failam:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>
1) Lai drukātu pirmo vienumu kopā ar rindas numuru (NR), kas atdalīts ar – no katras rindiņas failā geeksforgeeks.txt:
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Lai atgrieztu otro kolonnu/vienumu no faila geeksforgeeks.txt:
Jautājumam jābūt šādam:- Lai atgrieztu otro kolonnu/vienumu no faila geeksforgeeks.txt:
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Lai izdrukātu jebkuru rindiņu, kas nav tukša, ja tāda ir
$ awk 'NF <0' geeksforgeeks.txt>
šeit NF jābūt ne mazākam par 0 un lietotājam ir jādrukā arī rindas numurs:
pareizā atbilde: awk ‘NF == 0 {print NR}’ geeksforgeeks.txt
VAI
awk 'NF <= 0 {print NR}' geeksforgeeks.txt
0>
4) Lai atrastu failā esošās garākās rindas garumu:
$ awk '{ if (length($0)>max) max = garums($0) } END { print max }' geeksforgeeks.txt> 13>
5) Lai saskaitītu rindiņas failā:
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Drukāšanas līnijas ar vairāk nekā 10 rakstzīmēm:
$ awk 'length($0)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>
7) Lai atrastu/pārbaudītu jebkuru virkni jebkurā konkrētā kolonnā:
$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt> 8) Lai izdrukātu pirmo skaitļu kvadrātus no 1 līdz n, sakiet 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 = garums(Awk ir skriptu valoda, ko izmanto datu manipulēšanai un atskaišu ģenerēšanai. awk komandu programmēšanas valodai nav nepieciešama kompilēšana, un tā ļauj lietotājam izmantot mainīgos, ciparu funkcijas, virkņu funkcijas un loģiskos operatorus.
Awk ir utilīta, kas programmētājam ļauj rakstīt nelielas, bet efektīvas programmas paziņojumu veidā, kas definē teksta modeļus, kas jāmeklē katrā dokumenta rindiņā, un darbību, kas jāveic, ja tiek atrasta atbilstība. līnija. Awk galvenokārt tiek izmantots rakstu skenēšanai un apstrādei. Tā meklē vienu vai vairākus failus, lai noskaidrotu, vai tajos ir rindas, kas atbilst norādītajiem modeļiem, un pēc tam veic saistītās darbības.
Awk ir saīsināts no izstrādātāju vārdiem – Aho, Weinberger un Kernighan.
KO VAR DARĪT AR AWK?
1. AWK darbības:
(a) Skenē failu pēc rindas
(b) sadala katru ievades rindiņu laukos
(c) Salīdzina ievades līniju/laukus ar modeli
(d) veic darbību(s) saskaņotajās līnijās
2. Noderīga:
(a) Pārveidojiet datu failus
b) sagatavot formatētus pārskatus
3. Programmēšanas konstrukcijas:
a) Formatējiet izvadlīnijas
b) Aritmētiskās un virkņu darbības
c) nosacījumi un cilpas
Sintakse:
awk options 'selection _criteria {action }' input-file>izvades fails> Iespējas:
-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>
Komandu paraugi
Piemērs:
Apsveriet šādu teksta failu kā ievades failu visos tālāk norādītajos gadījumos.
$cat>darbinieks.txt>> $ awk '{print}' employee.txt>
Izvade:
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>
Iepriekš minētajā piemērā modelis nav norādīts. Tātad darbības attiecas uz visām līnijām. Darbības drukāšana bez argumentiem pēc noklusējuma izdrukā visu rindiņu, tāpēc bez kļūmēm tiek izdrukātas visas faila rindas.
2. Izdrukājiet līnijas, kas atbilst dotajam rakstam.
$ awk '/manager/ {print}' employee.txt> Izvade:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Iepriekš minētajā piemērā komanda awk izdrukā visu rindu, kas atbilst “pārvaldniekam”.
3. Līnijas sadalīšana laukos: Katram ierakstam, t.i., rindai, komanda awk pēc noklusējuma sadala ierakstu, kas atdalīts ar atstarpes rakstzīmi, un saglabā to mainīgajos $n. Ja rindā ir 4 vārdi, tā tiks saglabāta attiecīgi $1, $2, $3 un $4. Turklāt 0 $ apzīmē visu līniju.
$ awk '{print $1,$4}' employee.txt> Izvade:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Iepriekš minētajā piemērā $1 un $4 apzīmē attiecīgi laukus Vārds un Alga.
Awk iebūvētie mainīgie
Awk iebūvētie mainīgie ietver lauka mainīgos — $1, $2, $3 un tā tālāk ($0 ir visa rindiņa), kas sadala teksta rindiņu atsevišķos vārdos vai daļās, ko sauc par laukiem.
NR: komanda NR saglabā pašreizējo ievades ierakstu skaitu. Atcerieties, ka ieraksti parasti ir līnijas. Komanda Awk izpilda modeļa/darbības paziņojumus vienu reizi katram faila ierakstam. NF: NF komanda uzskaita lauku skaitu pašreizējā ievades ierakstā. FS: FS komanda satur lauka atdalīšanas rakstzīmi, ko izmanto, lai sadalītu laukus ievades rindā. Noklusējums ir atstarpe, kas nozīmē atstarpes un tabulēšanas rakstzīmes. FS var piešķirt citai rakstzīmei (parasti BEGIN), lai mainītu lauka atdalītāju. RS: RS komanda saglabā pašreizējā ieraksta atdalīšanas rakstzīmi. Tā kā pēc noklusējuma ievades rindiņa ir ievades ieraksts, noklusējuma ieraksta atdalīšanas rakstzīme ir jauna rindiņa. OFS: komanda OFS saglabā izvades lauku atdalītāju, kas atdala laukus, kad Awk tos drukā. Pēc noklusējuma ir tukša vieta. Ja drukā ir vairāki parametri, kas atdalīti ar komatiem, starp katru parametru tiek drukāta OFS vērtība. ORS: komanda ORS saglabā izvades ieraksta atdalītāju, kas atdala izvadlīnijas, kad Awk tās drukā. Noklusējums ir jaunrindas rakstzīme. print automātiski izvada ORS saturu neatkarīgi no tā, kas ir dots drukāšanai.
Piemēri:
NR iebūvēto mainīgo izmantošana (Display Line Number)
$ awk '{print NR,$0}' employee.txt> Izvade:
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>
Iepriekš minētajā piemērā komanda awk ar NR izdrukā visas rindas kopā ar rindas numuru.
NF iebūvēto mainīgo izmantošana (rādīt pēdējo lauku)
$ awk '{print $1,$NF}' employee.txt> Izvade:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Iepriekš minētajā piemērā $1 apzīmē vārdu un $NF apzīmē algu. Mēs varam iegūt algu, izmantojot $NF , kur $NF apzīmē pēdējo lauku.
Vēl viens NR iebūvēto mainīgo lietojums (displeja līnija no 3 līdz 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Izvade:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Vairāk piemēru
Dotajam teksta failam:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>
1) Lai drukātu pirmo vienumu kopā ar rindas numuru (NR), kas atdalīts ar – no katras rindiņas failā geeksforgeeks.txt:
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Lai atgrieztu otro kolonnu/vienumu no faila geeksforgeeks.txt:
Jautājumam jābūt šādam:- Lai atgrieztu otro kolonnu/vienumu no faila geeksforgeeks.txt:
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Lai izdrukātu jebkuru rindiņu, kas nav tukša, ja tāda ir
$ awk 'NF <0' geeksforgeeks.txt>
šeit NF jābūt ne mazākam par 0 un lietotājam ir jādrukā arī rindas numurs:
pareizā atbilde: awk ‘NF == 0 {print NR}’ geeksforgeeks.txt
VAI
awk 'NF <= 0 {print NR}' geeksforgeeks.txt
0>
4) Lai atrastu failā esošās garākās rindas garumu:
$ awk '{ if (length($0)>max) max = garums($0) } END { print max }' geeksforgeeks.txt> 13>
5) Lai saskaitītu rindiņas failā:
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Drukāšanas līnijas ar vairāk nekā 10 rakstzīmēm:
$ awk 'length($0)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>
7) Lai atrastu/pārbaudītu jebkuru virkni jebkurā konkrētā kolonnā:
$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt> 8) Lai izdrukātu pirmo skaitļu kvadrātus no 1 līdz n, sakiet 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>
) } END { print max }' geeksforgeeks.txt> 13>
5) Lai saskaitītu rindiņas failā:
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Drukāšanas līnijas ar vairāk nekā 10 rakstzīmēm:
$ awk 'length()>10' geeksforgeeks.txt> Awk ir skriptu valoda, ko izmanto datu manipulēšanai un atskaišu ģenerēšanai. awk komandu programmēšanas valodai nav nepieciešama kompilēšana, un tā ļauj lietotājam izmantot mainīgos, ciparu funkcijas, virkņu funkcijas un loģiskos operatorus.
Awk ir utilīta, kas programmētājam ļauj rakstīt nelielas, bet efektīvas programmas paziņojumu veidā, kas definē teksta modeļus, kas jāmeklē katrā dokumenta rindiņā, un darbību, kas jāveic, ja tiek atrasta atbilstība. līnija. Awk galvenokārt tiek izmantots rakstu skenēšanai un apstrādei. Tā meklē vienu vai vairākus failus, lai noskaidrotu, vai tajos ir rindas, kas atbilst norādītajiem modeļiem, un pēc tam veic saistītās darbības.
Awk ir saīsināts no izstrādātāju vārdiem – Aho, Weinberger un Kernighan.
KO VAR DARĪT AR AWK?
1. AWK darbības:
(a) Skenē failu pēc rindas
(b) sadala katru ievades rindiņu laukos
(c) Salīdzina ievades līniju/laukus ar modeli
(d) veic darbību(s) saskaņotajās līnijās2. Noderīga:
(a) Pārveidojiet datu failus
b) sagatavot formatētus pārskatus3. Programmēšanas konstrukcijas:
a) Formatējiet izvadlīnijas
b) Aritmētiskās un virkņu darbības
c) nosacījumi un cilpasSintakse:
awk options 'selection _criteria {action }' input-file>izvades fails>Iespējas:
-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>Komandu paraugi
Piemērs:
Apsveriet šādu teksta failu kā ievades failu visos tālāk norādītajos gadījumos.
$cat>darbinieks.txt>>$ awk '{print}' employee.txt> Izvade:
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>Iepriekš minētajā piemērā modelis nav norādīts. Tātad darbības attiecas uz visām līnijām. Darbības drukāšana bez argumentiem pēc noklusējuma izdrukā visu rindiņu, tāpēc bez kļūmēm tiek izdrukātas visas faila rindas.
2. Izdrukājiet līnijas, kas atbilst dotajam rakstam.
$ awk '/manager/ {print}' employee.txt>Izvade:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>Iepriekš minētajā piemērā komanda awk izdrukā visu rindu, kas atbilst “pārvaldniekam”.
3. Līnijas sadalīšana laukos: Katram ierakstam, t.i., rindai, komanda awk pēc noklusējuma sadala ierakstu, kas atdalīts ar atstarpes rakstzīmi, un saglabā to mainīgajos $n. Ja rindā ir 4 vārdi, tā tiks saglabāta attiecīgi $1, $2, $3 un $4. Turklāt 0 $ apzīmē visu līniju.
$ awk '{print $1,$4}' employee.txt>Izvade:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>Iepriekš minētajā piemērā $1 un $4 apzīmē attiecīgi laukus Vārds un Alga.
Awk iebūvētie mainīgie
Awk iebūvētie mainīgie ietver lauka mainīgos — $1, $2, $3 un tā tālāk ($0 ir visa rindiņa), kas sadala teksta rindiņu atsevišķos vārdos vai daļās, ko sauc par laukiem.
NR: komanda NR saglabā pašreizējo ievades ierakstu skaitu. Atcerieties, ka ieraksti parasti ir līnijas. Komanda Awk izpilda modeļa/darbības paziņojumus vienu reizi katram faila ierakstam. NF: NF komanda uzskaita lauku skaitu pašreizējā ievades ierakstā. FS: FS komanda satur lauka atdalīšanas rakstzīmi, ko izmanto, lai sadalītu laukus ievades rindā. Noklusējums ir atstarpe, kas nozīmē atstarpes un tabulēšanas rakstzīmes. FS var piešķirt citai rakstzīmei (parasti BEGIN), lai mainītu lauka atdalītāju. RS: RS komanda saglabā pašreizējā ieraksta atdalīšanas rakstzīmi. Tā kā pēc noklusējuma ievades rindiņa ir ievades ieraksts, noklusējuma ieraksta atdalīšanas rakstzīme ir jauna rindiņa. OFS: komanda OFS saglabā izvades lauku atdalītāju, kas atdala laukus, kad Awk tos drukā. Pēc noklusējuma ir tukša vieta. Ja drukā ir vairāki parametri, kas atdalīti ar komatiem, starp katru parametru tiek drukāta OFS vērtība. ORS: komanda ORS saglabā izvades ieraksta atdalītāju, kas atdala izvadlīnijas, kad Awk tās drukā. Noklusējums ir jaunrindas rakstzīme. print automātiski izvada ORS saturu neatkarīgi no tā, kas ir dots drukāšanai.
Piemēri:
NR iebūvēto mainīgo izmantošana (Display Line Number)
$ awk '{print NR,$0}' employee.txt>Izvade:
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>Iepriekš minētajā piemērā komanda awk ar NR izdrukā visas rindas kopā ar rindas numuru.
NF iebūvēto mainīgo izmantošana (rādīt pēdējo lauku)
$ awk '{print $1,$NF}' employee.txt>Izvade:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>Iepriekš minētajā piemērā $1 apzīmē vārdu un $NF apzīmē algu. Mēs varam iegūt algu, izmantojot $NF , kur $NF apzīmē pēdējo lauku.
Vēl viens NR iebūvēto mainīgo lietojums (displeja līnija no 3 līdz 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt>Izvade:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>Vairāk piemēru
Dotajam teksta failam:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>1) Lai drukātu pirmo vienumu kopā ar rindas numuru (NR), kas atdalīts ar – no katras rindiņas failā geeksforgeeks.txt:
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt>1 - A 2 - Tarun 3 – Manav 4 - Praveen>2) Lai atgrieztu otro kolonnu/vienumu no faila geeksforgeeks.txt:
Jautājumam jābūt šādam:- Lai atgrieztu otro kolonnu/vienumu no faila geeksforgeeks.txt:
$ awk '{print $2}' geeksforgeeks.txt>B A12 B6 M42>3) Lai izdrukātu jebkuru rindiņu, kas nav tukša, ja tāda ir
$ awk 'NF <0' geeksforgeeks.txt>šeit NF jābūt ne mazākam par 0 un lietotājam ir jādrukā arī rindas numurs:
pareizā atbilde: awk ‘NF == 0 {print NR}’ geeksforgeeks.txt
VAI
awk 'NF <= 0 {print NR}' geeksforgeeks.txt
0>4) Lai atrastu failā esošās garākās rindas garumu:
$ awk '{ if (length($0)>max) max = garums($0) } END { print max }' geeksforgeeks.txt>13>5) Lai saskaitītu rindiņas failā:
$ awk 'END { print NR }' geeksforgeeks.txt>3>6) Drukāšanas līnijas ar vairāk nekā 10 rakstzīmēm:
$ awk 'length($0)>10' geeksforgeeks.txt>Tarun A12 1 Praveen M42 3>7) Lai atrastu/pārbaudītu jebkuru virkni jebkurā konkrētā kolonnā:
$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt>8) Lai izdrukātu pirmo skaitļu kvadrātus no 1 līdz n, sakiet 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) Lai atrastu/pārbaudītu jebkuru virkni jebkurā konkrētā kolonnā:
$ awk '{ if( == 'B6') print Awk ir skriptu valoda, ko izmanto datu manipulēšanai un atskaišu ģenerēšanai. awk komandu programmēšanas valodai nav nepieciešama kompilēšana, un tā ļauj lietotājam izmantot mainīgos, ciparu funkcijas, virkņu funkcijas un loģiskos operatorus.
Awk ir utilīta, kas programmētājam ļauj rakstīt nelielas, bet efektīvas programmas paziņojumu veidā, kas definē teksta modeļus, kas jāmeklē katrā dokumenta rindiņā, un darbību, kas jāveic, ja tiek atrasta atbilstība. līnija. Awk galvenokārt tiek izmantots rakstu skenēšanai un apstrādei. Tā meklē vienu vai vairākus failus, lai noskaidrotu, vai tajos ir rindas, kas atbilst norādītajiem modeļiem, un pēc tam veic saistītās darbības.
Awk ir saīsināts no izstrādātāju vārdiem – Aho, Weinberger un Kernighan.
KO VAR DARĪT AR AWK?
1. AWK darbības:
(a) Skenē failu pēc rindas
(b) sadala katru ievades rindiņu laukos
(c) Salīdzina ievades līniju/laukus ar modeli
(d) veic darbību(s) saskaņotajās līnijās
2. Noderīga:
(a) Pārveidojiet datu failus
b) sagatavot formatētus pārskatus
3. Programmēšanas konstrukcijas:
a) Formatējiet izvadlīnijas
b) Aritmētiskās un virkņu darbības
c) nosacījumi un cilpas
Sintakse:
awk options 'selection _criteria {action }' input-file>izvades fails> Iespējas:
-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>
Komandu paraugi
Piemērs:
Apsveriet šādu teksta failu kā ievades failu visos tālāk norādītajos gadījumos.
$cat>darbinieks.txt>> $ awk '{print}' employee.txt>
Izvade:
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>
Iepriekš minētajā piemērā modelis nav norādīts. Tātad darbības attiecas uz visām līnijām. Darbības drukāšana bez argumentiem pēc noklusējuma izdrukā visu rindiņu, tāpēc bez kļūmēm tiek izdrukātas visas faila rindas.
2. Izdrukājiet līnijas, kas atbilst dotajam rakstam.
$ awk '/manager/ {print}' employee.txt> Izvade:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Iepriekš minētajā piemērā komanda awk izdrukā visu rindu, kas atbilst “pārvaldniekam”.
3. Līnijas sadalīšana laukos: Katram ierakstam, t.i., rindai, komanda awk pēc noklusējuma sadala ierakstu, kas atdalīts ar atstarpes rakstzīmi, un saglabā to mainīgajos $n. Ja rindā ir 4 vārdi, tā tiks saglabāta attiecīgi $1, $2, $3 un $4. Turklāt 0 $ apzīmē visu līniju.
$ awk '{print $1,$4}' employee.txt> Izvade:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Iepriekš minētajā piemērā $1 un $4 apzīmē attiecīgi laukus Vārds un Alga.
Awk iebūvētie mainīgie
Awk iebūvētie mainīgie ietver lauka mainīgos — $1, $2, $3 un tā tālāk ($0 ir visa rindiņa), kas sadala teksta rindiņu atsevišķos vārdos vai daļās, ko sauc par laukiem.
NR: komanda NR saglabā pašreizējo ievades ierakstu skaitu. Atcerieties, ka ieraksti parasti ir līnijas. Komanda Awk izpilda modeļa/darbības paziņojumus vienu reizi katram faila ierakstam. NF: NF komanda uzskaita lauku skaitu pašreizējā ievades ierakstā. FS: FS komanda satur lauka atdalīšanas rakstzīmi, ko izmanto, lai sadalītu laukus ievades rindā. Noklusējums ir atstarpe, kas nozīmē atstarpes un tabulēšanas rakstzīmes. FS var piešķirt citai rakstzīmei (parasti BEGIN), lai mainītu lauka atdalītāju. RS: RS komanda saglabā pašreizējā ieraksta atdalīšanas rakstzīmi. Tā kā pēc noklusējuma ievades rindiņa ir ievades ieraksts, noklusējuma ieraksta atdalīšanas rakstzīme ir jauna rindiņa. OFS: komanda OFS saglabā izvades lauku atdalītāju, kas atdala laukus, kad Awk tos drukā. Pēc noklusējuma ir tukša vieta. Ja drukā ir vairāki parametri, kas atdalīti ar komatiem, starp katru parametru tiek drukāta OFS vērtība. ORS: komanda ORS saglabā izvades ieraksta atdalītāju, kas atdala izvadlīnijas, kad Awk tās drukā. Noklusējums ir jaunrindas rakstzīme. print automātiski izvada ORS saturu neatkarīgi no tā, kas ir dots drukāšanai.
Piemēri:
NR iebūvēto mainīgo izmantošana (Display Line Number)
$ awk '{print NR,$0}' employee.txt> Izvade:
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>
Iepriekš minētajā piemērā komanda awk ar NR izdrukā visas rindas kopā ar rindas numuru.
NF iebūvēto mainīgo izmantošana (rādīt pēdējo lauku)
$ awk '{print $1,$NF}' employee.txt> Izvade:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Iepriekš minētajā piemērā $1 apzīmē vārdu un $NF apzīmē algu. Mēs varam iegūt algu, izmantojot $NF , kur $NF apzīmē pēdējo lauku.
Vēl viens NR iebūvēto mainīgo lietojums (displeja līnija no 3 līdz 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Izvade:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Vairāk piemēru
Dotajam teksta failam:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>
1) Lai drukātu pirmo vienumu kopā ar rindas numuru (NR), kas atdalīts ar – no katras rindiņas failā geeksforgeeks.txt:
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Lai atgrieztu otro kolonnu/vienumu no faila geeksforgeeks.txt:
Jautājumam jābūt šādam:- Lai atgrieztu otro kolonnu/vienumu no faila geeksforgeeks.txt:
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Lai izdrukātu jebkuru rindiņu, kas nav tukša, ja tāda ir
$ awk 'NF <0' geeksforgeeks.txt>
šeit NF jābūt ne mazākam par 0 un lietotājam ir jādrukā arī rindas numurs:
pareizā atbilde: awk ‘NF == 0 {print NR}’ geeksforgeeks.txt
VAI
awk 'NF <= 0 {print NR}' geeksforgeeks.txt
0>
4) Lai atrastu failā esošās garākās rindas garumu:
$ awk '{ if (length($0)>max) max = garums($0) } END { print max }' geeksforgeeks.txt> 13>
5) Lai saskaitītu rindiņas failā:
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Drukāšanas līnijas ar vairāk nekā 10 rakstzīmēm:
$ awk 'length($0)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>
7) Lai atrastu/pārbaudītu jebkuru virkni jebkurā konkrētā kolonnā:
$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt> 8) Lai izdrukātu pirmo skaitļu kvadrātus no 1 līdz n, sakiet 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) Lai izdrukātu pirmo skaitļu kvadrātus no 1 līdz n, sakiet 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>