Awk este un limbaj de scripting folosit pentru manipularea datelor și generarea de rapoarte. Limbajul de programare a comenzilor awk nu necesită compilare și permite utilizatorului să utilizeze variabile, funcții numerice, funcții șir și operatori logici.
Awk este un utilitar care permite unui programator să scrie programe mici, dar eficiente, sub formă de instrucțiuni care definesc modele de text care trebuie căutate în fiecare linie a unui document și acțiunea care trebuie întreprinsă atunci când se găsește o potrivire într-un document. linia. Awk este folosit mai ales pentru scanarea și procesarea modelelor. Acesta caută unul sau mai multe fișiere pentru a vedea dacă acestea conțin linii care se potrivesc cu modelele specificate și apoi efectuează acțiunile asociate.
Awk este prescurtat de la numele dezvoltatorilor - Aho, Weinberger și Kernighan.
CE PUTEM FACE CU AWK?
1. Operațiuni AWK:
(a) Scanează un fișier linie cu linie
(b) Împarte fiecare linie de intrare în câmpuri
(c) Compară linia/câmpurile de intrare cu modelul
(d) Efectuează acțiuni pe liniile potrivite
2. Util pentru:
(a) Transformați fișierele de date
(b) Produceți rapoarte formatate
3. Construcții de programare:
(a) Formatați liniile de ieșire
(b) Operații aritmetice și cu șiruri
(c) Condiționale și bucle
Sintaxă:
awk options 'selection _criteria {action }' input-file>fişier-ieşire> Opțiuni:
-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>
Exemple de comenzi
java citind csv
Exemplu:
Luați în considerare următorul fișier text ca fișier de intrare pentru toate cazurile de mai jos:
$cat>angajat.txt>>>$ awk '{print}' employee.txt>
Ieșire:
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>
În exemplul de mai sus, nu este dat niciun model. Deci acțiunile sunt aplicabile tuturor liniilor. Acțiunea de tipărire fără niciun argument tipărește întreaga linie în mod implicit, deci tipărește toate liniile fișierului fără eșec.
2. Imprimați liniile care se potrivesc cu modelul dat.
$ awk '/manager/ {print}' employee.txt> Ieșire:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
În exemplul de mai sus, comanda awk tipărește toată linia care se potrivește cu „managerul”.
3. Împărțirea unei linii în câmpuri: Pentru fiecare înregistrare, adică linie, comanda awk împarte înregistrarea delimitată de un caracter de spațiu alb în mod implicit și o stochează în variabilele $n. Dacă linia are 4 cuvinte, va fi stocată în , , și, respectiv, . De asemenea, Awk este un limbaj de scripting folosit pentru manipularea datelor și generarea de rapoarte. Limbajul de programare a comenzilor awk nu necesită compilare și permite utilizatorului să utilizeze variabile, funcții numerice, funcții șir și operatori logici. Awk este un utilitar care permite unui programator să scrie programe mici, dar eficiente, sub formă de instrucțiuni care definesc modele de text care trebuie căutate în fiecare linie a unui document și acțiunea care trebuie întreprinsă atunci când se găsește o potrivire într-un document. linia. Awk este folosit mai ales pentru scanarea și procesarea modelelor. Acesta caută unul sau mai multe fișiere pentru a vedea dacă acestea conțin linii care se potrivesc cu modelele specificate și apoi efectuează acțiunile asociate. Awk este prescurtat de la numele dezvoltatorilor - Aho, Weinberger și Kernighan. CE PUTEM FACE CU AWK? 1. Operațiuni AWK: 2. Util pentru: 3. Construcții de programare: Sintaxă: Opțiuni: Exemple de comenzi Exemplu: Luați în considerare următorul fișier text ca fișier de intrare pentru toate cazurile de mai jos: Ieșire: În exemplul de mai sus, nu este dat niciun model. Deci acțiunile sunt aplicabile tuturor liniilor. Acțiunea de tipărire fără niciun argument tipărește întreaga linie în mod implicit, deci tipărește toate liniile fișierului fără eșec. 2. Imprimați liniile care se potrivesc cu modelul dat. Ieșire: În exemplul de mai sus, comanda awk tipărește toată linia care se potrivește cu „managerul”. 3. Împărțirea unei linii în câmpuri: Pentru fiecare înregistrare, adică linie, comanda awk împarte înregistrarea delimitată de un caracter de spațiu alb în mod implicit și o stochează în variabilele $n. Dacă linia are 4 cuvinte, va fi stocată în $1, $2, $3 și, respectiv, $4. De asemenea, $0 reprezintă întreaga linie. Ieșire: În exemplul de mai sus, $1 și $4 reprezintă câmpurile Nume și, respectiv, Salariu. Variabile încorporate în Awk Variabilele încorporate ale lui Awk includ variabilele de câmp — $1, $2, $3 și așa mai departe ($0 este întreaga linie) — care despart o linie de text în cuvinte individuale sau bucăți numite câmpuri. Exemple: Utilizarea variabilelor încorporate NR (Afișare număr de linie) Ieșire: În exemplul de mai sus, comanda awk cu NR tipărește toate liniile împreună cu numărul liniei. Utilizarea variabilelor încorporate NF (Afișare ultimul câmp) Ieșire: În exemplul de mai sus, $1 reprezintă Nume și $NF reprezintă Salariul. Putem obține salariul folosind $NF , unde $NF reprezintă ultimul câmp. O altă utilizare a variabilelor încorporate NR (linia de afișare de la 3 la 6) Ieșire: Mai multe exemple Pentru fișierul text dat: 1) Pentru a imprima primul articol împreună cu numărul rândului (NR) separat cu – din fiecare rând în geeksforgeeks.txt: 2) Pentru a returna a doua coloană/articol de pe geeksforgeeks.txt: Întrebarea ar trebui să fie: - Pentru a returna a doua coloană/articol de pe geeksforgeeks.txt: 3) Pentru a imprima orice linie care nu este goală, dacă este prezentă aici NF ar trebui să fie 0 nu mai mic decât și utilizatorul trebuie să imprime și numărul liniei: răspuns corect: awk ‘NF == 0 {print NR}’ geeksforgeeks.txt SAU awk „NF <= 0 {print NR}” geeksforgeeks.txt 4) Pentru a găsi lungimea celei mai lungi linii prezente în fișier: 5) Pentru a număra liniile dintr-un fișier: 6) Imprimarea liniilor cu mai mult de 10 caractere: 8) Pentru a imprima pătratele primelor numere de la 1 la n spuneți 6:
(a) Scanează un fișier linie cu linie
(b) Împarte fiecare linie de intrare în câmpuri
(c) Compară linia/câmpurile de intrare cu modelul
(d) Efectuează acțiuni pe liniile potrivite
(a) Transformați fișierele de date
(b) Produceți rapoarte formatate
(a) Formatați liniile de ieșire
(b) Operații aritmetice și cu șiruri
(c) Condiționale și bucleawk options 'selection _criteria {action }' input-file>fişier-ieşire> -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>angajat.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: Comanda NR păstrează un număr curent al numărului de înregistrări de intrare. Amintiți-vă că înregistrările sunt de obicei linii. Comanda Awk execută instrucțiunile de tipar/acțiune o dată pentru fiecare înregistrare dintr-un fișier. NF: Comanda NF păstrează o contorizare a numărului de câmpuri din înregistrarea curentă de intrare. FS: Comanda FS conține caracterul separator de câmpuri care este folosit pentru a împărți câmpurile pe linia de intrare. Valoarea implicită este spațiul alb, adică spațiu și caractere de tabulație. FS poate fi reatribuit unui alt caracter (de obicei în BEGIN) pentru a schimba separatorul de câmp. RS: Comanda RS stochează caracterul separator al înregistrărilor curente. Deoarece, în mod implicit, o linie de intrare este înregistrarea de intrare, caracterul implicit de separare a înregistrărilor este o linie nouă. OFS: Comanda OFS stochează separatorul de câmpuri de ieșire, care separă câmpurile atunci când Awk le imprimă. Valoarea implicită este un spațiu liber. Ori de câte ori print are mai mulți parametri separați prin virgule, va imprima valoarea OFS între fiecare parametru. ORS: Comanda ORS stochează separatorul înregistrărilor de ieșire, care separă liniile de ieșire atunci când Awk le tipărește. Valoarea implicită este un caracter newline. print scoate automat conținutul ORS la sfârșitul oricărei date pentru imprimare.
$ 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 = lungime ($0) } END { print max }' geeksforgeeks.txt> 13>
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
$ awk 'length($0)>10' 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> Ieșire:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
În exemplul de mai sus, și reprezintă câmpurile Nume și, respectiv, Salariu.
Variabile încorporate în Awk
Variabilele încorporate ale lui Awk includ variabilele de câmp — , , și așa mai departe ( Awk este un limbaj de scripting folosit pentru manipularea datelor și generarea de rapoarte. Limbajul de programare a comenzilor awk nu necesită compilare și permite utilizatorului să utilizeze variabile, funcții numerice, funcții șir și operatori logici. Awk este un utilitar care permite unui programator să scrie programe mici, dar eficiente, sub formă de instrucțiuni care definesc modele de text care trebuie căutate în fiecare linie a unui document și acțiunea care trebuie întreprinsă atunci când se găsește o potrivire într-un document. linia. Awk este folosit mai ales pentru scanarea și procesarea modelelor. Acesta caută unul sau mai multe fișiere pentru a vedea dacă acestea conțin linii care se potrivesc cu modelele specificate și apoi efectuează acțiunile asociate. Awk este prescurtat de la numele dezvoltatorilor - Aho, Weinberger și Kernighan. CE PUTEM FACE CU AWK? 1. Operațiuni AWK: 2. Util pentru: 3. Construcții de programare: Sintaxă: Opțiuni: Exemple de comenzi Exemplu: Luați în considerare următorul fișier text ca fișier de intrare pentru toate cazurile de mai jos: Ieșire: În exemplul de mai sus, nu este dat niciun model. Deci acțiunile sunt aplicabile tuturor liniilor. Acțiunea de tipărire fără niciun argument tipărește întreaga linie în mod implicit, deci tipărește toate liniile fișierului fără eșec. 2. Imprimați liniile care se potrivesc cu modelul dat. Ieșire: În exemplul de mai sus, comanda awk tipărește toată linia care se potrivește cu „managerul”. 3. Împărțirea unei linii în câmpuri: Pentru fiecare înregistrare, adică linie, comanda awk împarte înregistrarea delimitată de un caracter de spațiu alb în mod implicit și o stochează în variabilele $n. Dacă linia are 4 cuvinte, va fi stocată în $1, $2, $3 și, respectiv, $4. De asemenea, $0 reprezintă întreaga linie. Ieșire: În exemplul de mai sus, $1 și $4 reprezintă câmpurile Nume și, respectiv, Salariu. Variabile încorporate în Awk Variabilele încorporate ale lui Awk includ variabilele de câmp — $1, $2, $3 și așa mai departe ($0 este întreaga linie) — care despart o linie de text în cuvinte individuale sau bucăți numite câmpuri. Exemple: Utilizarea variabilelor încorporate NR (Afișare număr de linie) Ieșire: În exemplul de mai sus, comanda awk cu NR tipărește toate liniile împreună cu numărul liniei. Utilizarea variabilelor încorporate NF (Afișare ultimul câmp) Ieșire: În exemplul de mai sus, $1 reprezintă Nume și $NF reprezintă Salariul. Putem obține salariul folosind $NF , unde $NF reprezintă ultimul câmp. O altă utilizare a variabilelor încorporate NR (linia de afișare de la 3 la 6) Ieșire: Mai multe exemple Pentru fișierul text dat: 1) Pentru a imprima primul articol împreună cu numărul rândului (NR) separat cu – din fiecare rând în geeksforgeeks.txt: 2) Pentru a returna a doua coloană/articol de pe geeksforgeeks.txt: Întrebarea ar trebui să fie: - Pentru a returna a doua coloană/articol de pe geeksforgeeks.txt: 3) Pentru a imprima orice linie care nu este goală, dacă este prezentă aici NF ar trebui să fie 0 nu mai mic decât și utilizatorul trebuie să imprime și numărul liniei: răspuns corect: awk ‘NF == 0 {print NR}’ geeksforgeeks.txt SAU awk „NF <= 0 {print NR}” geeksforgeeks.txt 4) Pentru a găsi lungimea celei mai lungi linii prezente în fișier: 5) Pentru a număra liniile dintr-un fișier: 6) Imprimarea liniilor cu mai mult de 10 caractere: 8) Pentru a imprima pătratele primelor numere de la 1 la n spuneți 6:
(a) Scanează un fișier linie cu linie
(b) Împarte fiecare linie de intrare în câmpuri
(c) Compară linia/câmpurile de intrare cu modelul
(d) Efectuează acțiuni pe liniile potrivite
(a) Transformați fișierele de date
(b) Produceți rapoarte formatate
(a) Formatați liniile de ieșire
(b) Operații aritmetice și cu șiruri
(c) Condiționale și bucleawk options 'selection _criteria {action }' input-file>fişier-ieşire> -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>angajat.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: Comanda NR păstrează un număr curent al numărului de înregistrări de intrare. Amintiți-vă că înregistrările sunt de obicei linii. Comanda Awk execută instrucțiunile de tipar/acțiune o dată pentru fiecare înregistrare dintr-un fișier. NF: Comanda NF păstrează o contorizare a numărului de câmpuri din înregistrarea curentă de intrare. FS: Comanda FS conține caracterul separator de câmpuri care este folosit pentru a împărți câmpurile pe linia de intrare. Valoarea implicită este spațiul alb, adică spațiu și caractere de tabulație. FS poate fi reatribuit unui alt caracter (de obicei în BEGIN) pentru a schimba separatorul de câmp. RS: Comanda RS stochează caracterul separator al înregistrărilor curente. Deoarece, în mod implicit, o linie de intrare este înregistrarea de intrare, caracterul implicit de separare a înregistrărilor este o linie nouă. OFS: Comanda OFS stochează separatorul de câmpuri de ieșire, care separă câmpurile atunci când Awk le imprimă. Valoarea implicită este un spațiu liber. Ori de câte ori print are mai mulți parametri separați prin virgule, va imprima valoarea OFS între fiecare parametru. ORS: Comanda ORS stochează separatorul înregistrărilor de ieșire, care separă liniile de ieșire atunci când Awk le tipărește. Valoarea implicită este un caracter newline. print scoate automat conținutul ORS la sfârșitul oricărei date pentru imprimare.
$ 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 = lungime ($0) } END { print max }' geeksforgeeks.txt> 13>
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
$ awk 'length($0)>10' 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: Comanda NR păstrează un număr curent al numărului de înregistrări de intrare. Amintiți-vă că înregistrările sunt de obicei linii. Comanda Awk execută instrucțiunile de tipar/acțiune o dată pentru fiecare înregistrare dintr-un fișier. NF: Comanda NF păstrează o contorizare a numărului de câmpuri din înregistrarea curentă de intrare. FS: Comanda FS conține caracterul separator de câmpuri care este folosit pentru a împărți câmpurile pe linia de intrare. Valoarea implicită este spațiul alb, adică spațiu și caractere de tabulație. FS poate fi reatribuit unui alt caracter (de obicei în BEGIN) pentru a schimba separatorul de câmp. RS: Comanda RS stochează caracterul separator al înregistrărilor curente. Deoarece, în mod implicit, o linie de intrare este înregistrarea de intrare, caracterul implicit de separare a înregistrărilor este o linie nouă. OFS: Comanda OFS stochează separatorul de câmpuri de ieșire, care separă câmpurile atunci când Awk le imprimă. Valoarea implicită este un spațiu liber. Ori de câte ori print are mai mulți parametri separați prin virgule, va imprima valoarea OFS între fiecare parametru. ORS: Comanda ORS stochează separatorul înregistrărilor de ieșire, care separă liniile de ieșire atunci când Awk le tipărește. Valoarea implicită este un caracter newline. print scoate automat conținutul ORS la sfârșitul oricărei date pentru imprimare.
Exemple:
Utilizarea variabilelor încorporate NR (Afișare număr de linie)
$ awk '{print NR,Awk este un limbaj de scripting folosit pentru manipularea datelor și generarea de rapoarte. Limbajul de programare a comenzilor awk nu necesită compilare și permite utilizatorului să utilizeze variabile, funcții numerice, funcții șir și operatori logici.
Awk este un utilitar care permite unui programator să scrie programe mici, dar eficiente, sub formă de instrucțiuni care definesc modele de text care trebuie căutate în fiecare linie a unui document și acțiunea care trebuie întreprinsă atunci când se găsește o potrivire într-un document. linia. Awk este folosit mai ales pentru scanarea și procesarea modelelor. Acesta caută unul sau mai multe fișiere pentru a vedea dacă acestea conțin linii care se potrivesc cu modelele specificate și apoi efectuează acțiunile asociate.
Awk este prescurtat de la numele dezvoltatorilor - Aho, Weinberger și Kernighan.
CE PUTEM FACE CU AWK?
1. Operațiuni AWK:
(a) Scanează un fișier linie cu linie
(b) Împarte fiecare linie de intrare în câmpuri
(c) Compară linia/câmpurile de intrare cu modelul
(d) Efectuează acțiuni pe liniile potrivite
2. Util pentru:
(a) Transformați fișierele de date
(b) Produceți rapoarte formatate
3. Construcții de programare:
(a) Formatați liniile de ieșire
(b) Operații aritmetice și cu șiruri
(c) Condiționale și bucle
Sintaxă:
awk options 'selection _criteria {action }' input-file>fişier-ieşire> Opțiuni:
-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>
Exemple de comenzi
Exemplu:
Luați în considerare următorul fișier text ca fișier de intrare pentru toate cazurile de mai jos:
$cat>angajat.txt>>> $ awk '{print}' employee.txt>
Ieșire:
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>
În exemplul de mai sus, nu este dat niciun model. Deci acțiunile sunt aplicabile tuturor liniilor. Acțiunea de tipărire fără niciun argument tipărește întreaga linie în mod implicit, deci tipărește toate liniile fișierului fără eșec.
2. Imprimați liniile care se potrivesc cu modelul dat.
$ awk '/manager/ {print}' employee.txt> Ieșire:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
În exemplul de mai sus, comanda awk tipărește toată linia care se potrivește cu „managerul”.
3. Împărțirea unei linii în câmpuri: Pentru fiecare înregistrare, adică linie, comanda awk împarte înregistrarea delimitată de un caracter de spațiu alb în mod implicit și o stochează în variabilele $n. Dacă linia are 4 cuvinte, va fi stocată în $1, $2, $3 și, respectiv, $4. De asemenea, $0 reprezintă întreaga linie.
$ awk '{print $1,$4}' employee.txt> Ieșire:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
În exemplul de mai sus, $1 și $4 reprezintă câmpurile Nume și, respectiv, Salariu.
Variabile încorporate în Awk
Variabilele încorporate ale lui Awk includ variabilele de câmp — $1, $2, $3 și așa mai departe ($0 este întreaga linie) — care despart o linie de text în cuvinte individuale sau bucăți numite câmpuri.
NR: Comanda NR păstrează un număr curent al numărului de înregistrări de intrare. Amintiți-vă că înregistrările sunt de obicei linii. Comanda Awk execută instrucțiunile de tipar/acțiune o dată pentru fiecare înregistrare dintr-un fișier. NF: Comanda NF păstrează o contorizare a numărului de câmpuri din înregistrarea curentă de intrare. FS: Comanda FS conține caracterul separator de câmpuri care este folosit pentru a împărți câmpurile pe linia de intrare. Valoarea implicită este spațiul alb, adică spațiu și caractere de tabulație. FS poate fi reatribuit unui alt caracter (de obicei în BEGIN) pentru a schimba separatorul de câmp. RS: Comanda RS stochează caracterul separator al înregistrărilor curente. Deoarece, în mod implicit, o linie de intrare este înregistrarea de intrare, caracterul implicit de separare a înregistrărilor este o linie nouă. OFS: Comanda OFS stochează separatorul de câmpuri de ieșire, care separă câmpurile atunci când Awk le imprimă. Valoarea implicită este un spațiu liber. Ori de câte ori print are mai mulți parametri separați prin virgule, va imprima valoarea OFS între fiecare parametru. ORS: Comanda ORS stochează separatorul înregistrărilor de ieșire, care separă liniile de ieșire atunci când Awk le tipărește. Valoarea implicită este un caracter newline. print scoate automat conținutul ORS la sfârșitul oricărei date pentru imprimare.
Exemple:
Utilizarea variabilelor încorporate NR (Afișare număr de linie)
$ awk '{print NR,$0}' employee.txt> Ieșire:
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>
În exemplul de mai sus, comanda awk cu NR tipărește toate liniile împreună cu numărul liniei.
Utilizarea variabilelor încorporate NF (Afișare ultimul câmp)
$ awk '{print $1,$NF}' employee.txt> Ieșire:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
În exemplul de mai sus, $1 reprezintă Nume și $NF reprezintă Salariul. Putem obține salariul folosind $NF , unde $NF reprezintă ultimul câmp.
O altă utilizare a variabilelor încorporate NR (linia de afișare de la 3 la 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Ieșire:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Mai multe exemple
Pentru fișierul text dat:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>
1) Pentru a imprima primul articol împreună cu numărul rândului (NR) separat cu – din fiecare rând în geeksforgeeks.txt:
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Pentru a returna a doua coloană/articol de pe geeksforgeeks.txt:
Întrebarea ar trebui să fie: - Pentru a returna a doua coloană/articol de pe geeksforgeeks.txt:
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Pentru a imprima orice linie care nu este goală, dacă este prezentă
$ awk 'NF <0' geeksforgeeks.txt>
aici NF ar trebui să fie 0 nu mai mic decât și utilizatorul trebuie să imprime și numărul liniei:
răspuns corect: awk ‘NF == 0 {print NR}’ geeksforgeeks.txt
SAU
awk „NF <= 0 {print NR}” geeksforgeeks.txt
0>
4) Pentru a găsi lungimea celei mai lungi linii prezente în fișier:
$ awk '{ if (length($0)>max) max = lungime ($0) } END { print max }' geeksforgeeks.txt> 13>
5) Pentru a număra liniile dintr-un fișier:
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Imprimarea liniilor cu mai mult de 10 caractere:
$ awk 'length($0)>10' geeksforgeeks.txt>>> $ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt>
8) Pentru a imprima pătratele primelor numere de la 1 la n spuneți 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> Ieșire:
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>
În exemplul de mai sus, comanda awk cu NR tipărește toate liniile împreună cu numărul liniei.
Utilizarea variabilelor încorporate NF (Afișare ultimul câmp)
clasă vs obiect în java
$ awk '{print ,$NF}' employee.txt> Ieșire:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
În exemplul de mai sus, reprezintă Nume și $NF reprezintă Salariul. Putem obține salariul folosind $NF , unde $NF reprezintă ultimul câmp.
O altă utilizare a variabilelor încorporate NR (linia de afișare de la 3 la 6)
$ awk 'NR==3, NR==6 {print NR,Awk este un limbaj de scripting folosit pentru manipularea datelor și generarea de rapoarte. Limbajul de programare a comenzilor awk nu necesită compilare și permite utilizatorului să utilizeze variabile, funcții numerice, funcții șir și operatori logici.
Awk este un utilitar care permite unui programator să scrie programe mici, dar eficiente, sub formă de instrucțiuni care definesc modele de text care trebuie căutate în fiecare linie a unui document și acțiunea care trebuie întreprinsă atunci când se găsește o potrivire într-un document. linia. Awk este folosit mai ales pentru scanarea și procesarea modelelor. Acesta caută unul sau mai multe fișiere pentru a vedea dacă acestea conțin linii care se potrivesc cu modelele specificate și apoi efectuează acțiunile asociate.
Awk este prescurtat de la numele dezvoltatorilor - Aho, Weinberger și Kernighan.
CE PUTEM FACE CU AWK?
1. Operațiuni AWK:
(a) Scanează un fișier linie cu linie
(b) Împarte fiecare linie de intrare în câmpuri
(c) Compară linia/câmpurile de intrare cu modelul
(d) Efectuează acțiuni pe liniile potrivite
2. Util pentru:
(a) Transformați fișierele de date
(b) Produceți rapoarte formatate
3. Construcții de programare:
(a) Formatați liniile de ieșire
(b) Operații aritmetice și cu șiruri
(c) Condiționale și bucle
Sintaxă:
awk options 'selection _criteria {action }' input-file>fişier-ieşire> Opțiuni:
-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>
Exemple de comenzi
Exemplu:
Luați în considerare următorul fișier text ca fișier de intrare pentru toate cazurile de mai jos:
$cat>angajat.txt>>> $ awk '{print}' employee.txt>
Ieșire:
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>
În exemplul de mai sus, nu este dat niciun model. Deci acțiunile sunt aplicabile tuturor liniilor. Acțiunea de tipărire fără niciun argument tipărește întreaga linie în mod implicit, deci tipărește toate liniile fișierului fără eșec.
2. Imprimați liniile care se potrivesc cu modelul dat.
$ awk '/manager/ {print}' employee.txt> Ieșire:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
În exemplul de mai sus, comanda awk tipărește toată linia care se potrivește cu „managerul”.
3. Împărțirea unei linii în câmpuri: Pentru fiecare înregistrare, adică linie, comanda awk împarte înregistrarea delimitată de un caracter de spațiu alb în mod implicit și o stochează în variabilele $n. Dacă linia are 4 cuvinte, va fi stocată în $1, $2, $3 și, respectiv, $4. De asemenea, $0 reprezintă întreaga linie.
$ awk '{print $1,$4}' employee.txt> Ieșire:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
În exemplul de mai sus, $1 și $4 reprezintă câmpurile Nume și, respectiv, Salariu.
Variabile încorporate în Awk
Variabilele încorporate ale lui Awk includ variabilele de câmp — $1, $2, $3 și așa mai departe ($0 este întreaga linie) — care despart o linie de text în cuvinte individuale sau bucăți numite câmpuri.
NR: Comanda NR păstrează un număr curent al numărului de înregistrări de intrare. Amintiți-vă că înregistrările sunt de obicei linii. Comanda Awk execută instrucțiunile de tipar/acțiune o dată pentru fiecare înregistrare dintr-un fișier. NF: Comanda NF păstrează o contorizare a numărului de câmpuri din înregistrarea curentă de intrare. FS: Comanda FS conține caracterul separator de câmpuri care este folosit pentru a împărți câmpurile pe linia de intrare. Valoarea implicită este spațiul alb, adică spațiu și caractere de tabulație. FS poate fi reatribuit unui alt caracter (de obicei în BEGIN) pentru a schimba separatorul de câmp. RS: Comanda RS stochează caracterul separator al înregistrărilor curente. Deoarece, în mod implicit, o linie de intrare este înregistrarea de intrare, caracterul implicit de separare a înregistrărilor este o linie nouă. OFS: Comanda OFS stochează separatorul de câmpuri de ieșire, care separă câmpurile atunci când Awk le imprimă. Valoarea implicită este un spațiu liber. Ori de câte ori print are mai mulți parametri separați prin virgule, va imprima valoarea OFS între fiecare parametru. ORS: Comanda ORS stochează separatorul înregistrărilor de ieșire, care separă liniile de ieșire atunci când Awk le tipărește. Valoarea implicită este un caracter newline. print scoate automat conținutul ORS la sfârșitul oricărei date pentru imprimare.
Exemple:
Utilizarea variabilelor încorporate NR (Afișare număr de linie)
$ awk '{print NR,$0}' employee.txt> Ieșire:
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>
În exemplul de mai sus, comanda awk cu NR tipărește toate liniile împreună cu numărul liniei.
Utilizarea variabilelor încorporate NF (Afișare ultimul câmp)
$ awk '{print $1,$NF}' employee.txt> Ieșire:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
În exemplul de mai sus, $1 reprezintă Nume și $NF reprezintă Salariul. Putem obține salariul folosind $NF , unde $NF reprezintă ultimul câmp.
O altă utilizare a variabilelor încorporate NR (linia de afișare de la 3 la 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Ieșire:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Mai multe exemple
Pentru fișierul text dat:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>
1) Pentru a imprima primul articol împreună cu numărul rândului (NR) separat cu – din fiecare rând în geeksforgeeks.txt:
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Pentru a returna a doua coloană/articol de pe geeksforgeeks.txt:
Întrebarea ar trebui să fie: - Pentru a returna a doua coloană/articol de pe geeksforgeeks.txt:
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Pentru a imprima orice linie care nu este goală, dacă este prezentă
$ awk 'NF <0' geeksforgeeks.txt>
aici NF ar trebui să fie 0 nu mai mic decât și utilizatorul trebuie să imprime și numărul liniei:
răspuns corect: awk ‘NF == 0 {print NR}’ geeksforgeeks.txt
SAU
awk „NF <= 0 {print NR}” geeksforgeeks.txt
0>
4) Pentru a găsi lungimea celei mai lungi linii prezente în fișier:
$ awk '{ if (length($0)>max) max = lungime ($0) } END { print max }' geeksforgeeks.txt> 13>
5) Pentru a număra liniile dintr-un fișier:
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Imprimarea liniilor cu mai mult de 10 caractere:
$ awk 'length($0)>10' geeksforgeeks.txt>>> $ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt>
8) Pentru a imprima pătratele primelor numere de la 1 la n spuneți 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> Ieșire:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Mai multe exemple
Pentru fișierul text dat:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>
1) Pentru a imprima primul articol împreună cu numărul rândului (NR) separat cu – din fiecare rând în geeksforgeeks.txt:
$ awk '{print NR '- ' }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Pentru a returna a doua coloană/articol de pe geeksforgeeks.txt:
Întrebarea ar trebui să fie: - Pentru a returna a doua coloană/articol de pe geeksforgeeks.txt:
număr mysql
$ awk '{print }' geeksforgeeks.txt> B A12 B6 M42>
3) Pentru a imprima orice linie care nu este goală, dacă este prezentă
$ awk 'NF <0' geeksforgeeks.txt>
aici NF ar trebui să fie 0 nu mai mic decât și utilizatorul trebuie să imprime și numărul liniei:
răspuns corect: awk ‘NF == 0 {print NR}’ geeksforgeeks.txt
SAU
awk „NF <= 0 {print NR}” geeksforgeeks.txt
0>
4) Pentru a găsi lungimea celei mai lungi linii prezente în fișier:
$ awk '{ if (length(Awk este un limbaj de scripting folosit pentru manipularea datelor și generarea de rapoarte. Limbajul de programare a comenzilor awk nu necesită compilare și permite utilizatorului să utilizeze variabile, funcții numerice, funcții șir și operatori logici.
Awk este un utilitar care permite unui programator să scrie programe mici, dar eficiente, sub formă de instrucțiuni care definesc modele de text care trebuie căutate în fiecare linie a unui document și acțiunea care trebuie întreprinsă atunci când se găsește o potrivire într-un document. linia. Awk este folosit mai ales pentru scanarea și procesarea modelelor. Acesta caută unul sau mai multe fișiere pentru a vedea dacă acestea conțin linii care se potrivesc cu modelele specificate și apoi efectuează acțiunile asociate.
Awk este prescurtat de la numele dezvoltatorilor - Aho, Weinberger și Kernighan.
CE PUTEM FACE CU AWK?
1. Operațiuni AWK:
(a) Scanează un fișier linie cu linie
(b) Împarte fiecare linie de intrare în câmpuri
(c) Compară linia/câmpurile de intrare cu modelul
(d) Efectuează acțiuni pe liniile potrivite
2. Util pentru:
(a) Transformați fișierele de date
(b) Produceți rapoarte formatate
3. Construcții de programare:
(a) Formatați liniile de ieșire
(b) Operații aritmetice și cu șiruri
(c) Condiționale și bucle
Sintaxă:
awk options 'selection _criteria {action }' input-file>fişier-ieşire> Opțiuni:
-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>
Exemple de comenzi
Exemplu:
Luați în considerare următorul fișier text ca fișier de intrare pentru toate cazurile de mai jos:
$cat>angajat.txt>>> $ awk '{print}' employee.txt>
Ieșire:
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>
În exemplul de mai sus, nu este dat niciun model. Deci acțiunile sunt aplicabile tuturor liniilor. Acțiunea de tipărire fără niciun argument tipărește întreaga linie în mod implicit, deci tipărește toate liniile fișierului fără eșec.
2. Imprimați liniile care se potrivesc cu modelul dat.
$ awk '/manager/ {print}' employee.txt> Ieșire:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
În exemplul de mai sus, comanda awk tipărește toată linia care se potrivește cu „managerul”.
3. Împărțirea unei linii în câmpuri: Pentru fiecare înregistrare, adică linie, comanda awk împarte înregistrarea delimitată de un caracter de spațiu alb în mod implicit și o stochează în variabilele $n. Dacă linia are 4 cuvinte, va fi stocată în $1, $2, $3 și, respectiv, $4. De asemenea, $0 reprezintă întreaga linie.
$ awk '{print $1,$4}' employee.txt> Ieșire:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
În exemplul de mai sus, $1 și $4 reprezintă câmpurile Nume și, respectiv, Salariu.
Variabile încorporate în Awk
Variabilele încorporate ale lui Awk includ variabilele de câmp — $1, $2, $3 și așa mai departe ($0 este întreaga linie) — care despart o linie de text în cuvinte individuale sau bucăți numite câmpuri.
NR: Comanda NR păstrează un număr curent al numărului de înregistrări de intrare. Amintiți-vă că înregistrările sunt de obicei linii. Comanda Awk execută instrucțiunile de tipar/acțiune o dată pentru fiecare înregistrare dintr-un fișier. NF: Comanda NF păstrează o contorizare a numărului de câmpuri din înregistrarea curentă de intrare. FS: Comanda FS conține caracterul separator de câmpuri care este folosit pentru a împărți câmpurile pe linia de intrare. Valoarea implicită este spațiul alb, adică spațiu și caractere de tabulație. FS poate fi reatribuit unui alt caracter (de obicei în BEGIN) pentru a schimba separatorul de câmp. RS: Comanda RS stochează caracterul separator al înregistrărilor curente. Deoarece, în mod implicit, o linie de intrare este înregistrarea de intrare, caracterul implicit de separare a înregistrărilor este o linie nouă. OFS: Comanda OFS stochează separatorul de câmpuri de ieșire, care separă câmpurile atunci când Awk le imprimă. Valoarea implicită este un spațiu liber. Ori de câte ori print are mai mulți parametri separați prin virgule, va imprima valoarea OFS între fiecare parametru. ORS: Comanda ORS stochează separatorul înregistrărilor de ieșire, care separă liniile de ieșire atunci când Awk le tipărește. Valoarea implicită este un caracter newline. print scoate automat conținutul ORS la sfârșitul oricărei date pentru imprimare.
Exemple:
Utilizarea variabilelor încorporate NR (Afișare număr de linie)
$ awk '{print NR,$0}' employee.txt> Ieșire:
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>
În exemplul de mai sus, comanda awk cu NR tipărește toate liniile împreună cu numărul liniei.
Utilizarea variabilelor încorporate NF (Afișare ultimul câmp)
$ awk '{print $1,$NF}' employee.txt> Ieșire:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
În exemplul de mai sus, $1 reprezintă Nume și $NF reprezintă Salariul. Putem obține salariul folosind $NF , unde $NF reprezintă ultimul câmp.
O altă utilizare a variabilelor încorporate NR (linia de afișare de la 3 la 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Ieșire:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Mai multe exemple
Pentru fișierul text dat:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>
1) Pentru a imprima primul articol împreună cu numărul rândului (NR) separat cu – din fiecare rând în geeksforgeeks.txt:
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Pentru a returna a doua coloană/articol de pe geeksforgeeks.txt:
Întrebarea ar trebui să fie: - Pentru a returna a doua coloană/articol de pe geeksforgeeks.txt:
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Pentru a imprima orice linie care nu este goală, dacă este prezentă
$ awk 'NF <0' geeksforgeeks.txt>
aici NF ar trebui să fie 0 nu mai mic decât și utilizatorul trebuie să imprime și numărul liniei:
răspuns corect: awk ‘NF == 0 {print NR}’ geeksforgeeks.txt
SAU
awk „NF <= 0 {print NR}” geeksforgeeks.txt
0>
4) Pentru a găsi lungimea celei mai lungi linii prezente în fișier:
$ awk '{ if (length($0)>max) max = lungime ($0) } END { print max }' geeksforgeeks.txt> 13>
5) Pentru a număra liniile dintr-un fișier:
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Imprimarea liniilor cu mai mult de 10 caractere:
$ awk 'length($0)>10' geeksforgeeks.txt>>> $ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt>
8) Pentru a imprima pătratele primelor numere de la 1 la n spuneți 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 = lungime (Awk este un limbaj de scripting folosit pentru manipularea datelor și generarea de rapoarte. Limbajul de programare a comenzilor awk nu necesită compilare și permite utilizatorului să utilizeze variabile, funcții numerice, funcții șir și operatori logici.
Awk este un utilitar care permite unui programator să scrie programe mici, dar eficiente, sub formă de instrucțiuni care definesc modele de text care trebuie căutate în fiecare linie a unui document și acțiunea care trebuie întreprinsă atunci când se găsește o potrivire într-un document. linia. Awk este folosit mai ales pentru scanarea și procesarea modelelor. Acesta caută unul sau mai multe fișiere pentru a vedea dacă acestea conțin linii care se potrivesc cu modelele specificate și apoi efectuează acțiunile asociate.
Awk este prescurtat de la numele dezvoltatorilor - Aho, Weinberger și Kernighan.
CE PUTEM FACE CU AWK?
1. Operațiuni AWK:
(a) Scanează un fișier linie cu linie
(b) Împarte fiecare linie de intrare în câmpuri
(c) Compară linia/câmpurile de intrare cu modelul
(d) Efectuează acțiuni pe liniile potrivite
2. Util pentru:
(a) Transformați fișierele de date
(b) Produceți rapoarte formatate
3. Construcții de programare:
(a) Formatați liniile de ieșire
(b) Operații aritmetice și cu șiruri
(c) Condiționale și bucle
Sintaxă:
awk options 'selection _criteria {action }' input-file>fişier-ieşire> Opțiuni:
-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>
Exemple de comenzi
Exemplu:
Luați în considerare următorul fișier text ca fișier de intrare pentru toate cazurile de mai jos:
$cat>angajat.txt>>> $ awk '{print}' employee.txt>
Ieșire:
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>
În exemplul de mai sus, nu este dat niciun model. Deci acțiunile sunt aplicabile tuturor liniilor. Acțiunea de tipărire fără niciun argument tipărește întreaga linie în mod implicit, deci tipărește toate liniile fișierului fără eșec.
2. Imprimați liniile care se potrivesc cu modelul dat.
$ awk '/manager/ {print}' employee.txt> Ieșire:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
În exemplul de mai sus, comanda awk tipărește toată linia care se potrivește cu „managerul”.
3. Împărțirea unei linii în câmpuri: Pentru fiecare înregistrare, adică linie, comanda awk împarte înregistrarea delimitată de un caracter de spațiu alb în mod implicit și o stochează în variabilele $n. Dacă linia are 4 cuvinte, va fi stocată în $1, $2, $3 și, respectiv, $4. De asemenea, $0 reprezintă întreaga linie.
$ awk '{print $1,$4}' employee.txt> Ieșire:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
În exemplul de mai sus, $1 și $4 reprezintă câmpurile Nume și, respectiv, Salariu.
Variabile încorporate în Awk
Variabilele încorporate ale lui Awk includ variabilele de câmp — $1, $2, $3 și așa mai departe ($0 este întreaga linie) — care despart o linie de text în cuvinte individuale sau bucăți numite câmpuri.
NR: Comanda NR păstrează un număr curent al numărului de înregistrări de intrare. Amintiți-vă că înregistrările sunt de obicei linii. Comanda Awk execută instrucțiunile de tipar/acțiune o dată pentru fiecare înregistrare dintr-un fișier. NF: Comanda NF păstrează o contorizare a numărului de câmpuri din înregistrarea curentă de intrare. FS: Comanda FS conține caracterul separator de câmpuri care este folosit pentru a împărți câmpurile pe linia de intrare. Valoarea implicită este spațiul alb, adică spațiu și caractere de tabulație. FS poate fi reatribuit unui alt caracter (de obicei în BEGIN) pentru a schimba separatorul de câmp. RS: Comanda RS stochează caracterul separator al înregistrărilor curente. Deoarece, în mod implicit, o linie de intrare este înregistrarea de intrare, caracterul implicit de separare a înregistrărilor este o linie nouă. OFS: Comanda OFS stochează separatorul de câmpuri de ieșire, care separă câmpurile atunci când Awk le imprimă. Valoarea implicită este un spațiu liber. Ori de câte ori print are mai mulți parametri separați prin virgule, va imprima valoarea OFS între fiecare parametru. ORS: Comanda ORS stochează separatorul înregistrărilor de ieșire, care separă liniile de ieșire atunci când Awk le tipărește. Valoarea implicită este un caracter newline. print scoate automat conținutul ORS la sfârșitul oricărei date pentru imprimare.
Exemple:
Utilizarea variabilelor încorporate NR (Afișare număr de linie)
$ awk '{print NR,$0}' employee.txt> Ieșire:
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>
În exemplul de mai sus, comanda awk cu NR tipărește toate liniile împreună cu numărul liniei.
Utilizarea variabilelor încorporate NF (Afișare ultimul câmp)
$ awk '{print $1,$NF}' employee.txt> Ieșire:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
În exemplul de mai sus, $1 reprezintă Nume și $NF reprezintă Salariul. Putem obține salariul folosind $NF , unde $NF reprezintă ultimul câmp.
O altă utilizare a variabilelor încorporate NR (linia de afișare de la 3 la 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Ieșire:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Mai multe exemple
Pentru fișierul text dat:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>
1) Pentru a imprima primul articol împreună cu numărul rândului (NR) separat cu – din fiecare rând în geeksforgeeks.txt:
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Pentru a returna a doua coloană/articol de pe geeksforgeeks.txt:
Întrebarea ar trebui să fie: - Pentru a returna a doua coloană/articol de pe geeksforgeeks.txt:
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Pentru a imprima orice linie care nu este goală, dacă este prezentă
$ awk 'NF <0' geeksforgeeks.txt>
aici NF ar trebui să fie 0 nu mai mic decât și utilizatorul trebuie să imprime și numărul liniei:
răspuns corect: awk ‘NF == 0 {print NR}’ geeksforgeeks.txt
SAU
awk „NF <= 0 {print NR}” geeksforgeeks.txt
0>
4) Pentru a găsi lungimea celei mai lungi linii prezente în fișier:
$ awk '{ if (length($0)>max) max = lungime ($0) } END { print max }' geeksforgeeks.txt> 13>
5) Pentru a număra liniile dintr-un fișier:
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Imprimarea liniilor cu mai mult de 10 caractere:
$ awk 'length($0)>10' geeksforgeeks.txt>>> $ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt>
8) Pentru a imprima pătratele primelor numere de la 1 la n spuneți 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) Pentru a număra liniile dintr-un fișier:
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Imprimarea liniilor cu mai mult de 10 caractere:
$ awk 'length()>10' geeksforgeeks.txt>>> Awk este un limbaj de scripting folosit pentru manipularea datelor și generarea de rapoarte. Limbajul de programare a comenzilor awk nu necesită compilare și permite utilizatorului să utilizeze variabile, funcții numerice, funcții șir și operatori logici.
Awk este un utilitar care permite unui programator să scrie programe mici, dar eficiente, sub formă de instrucțiuni care definesc modele de text care trebuie căutate în fiecare linie a unui document și acțiunea care trebuie întreprinsă atunci când se găsește o potrivire într-un document. linia. Awk este folosit mai ales pentru scanarea și procesarea modelelor. Acesta caută unul sau mai multe fișiere pentru a vedea dacă acestea conțin linii care se potrivesc cu modelele specificate și apoi efectuează acțiunile asociate.
Awk este prescurtat de la numele dezvoltatorilor - Aho, Weinberger și Kernighan.
CE PUTEM FACE CU AWK?
1. Operațiuni AWK:
(a) Scanează un fișier linie cu linie
(b) Împarte fiecare linie de intrare în câmpuri
(c) Compară linia/câmpurile de intrare cu modelul
(d) Efectuează acțiuni pe liniile potrivite2. Util pentru:
(a) Transformați fișierele de date
(b) Produceți rapoarte formatate3. Construcții de programare:
(a) Formatați liniile de ieșire
(b) Operații aritmetice și cu șiruri
(c) Condiționale și bucleSintaxă:
awk options 'selection _criteria {action }' input-file>fişier-ieşire>Opțiuni:
-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>Exemple de comenzi
Exemplu:
Luați în considerare următorul fișier text ca fișier de intrare pentru toate cazurile de mai jos:
$cat>angajat.txt>>>$ awk '{print}' employee.txt> Ieșire:
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>În exemplul de mai sus, nu este dat niciun model. Deci acțiunile sunt aplicabile tuturor liniilor. Acțiunea de tipărire fără niciun argument tipărește întreaga linie în mod implicit, deci tipărește toate liniile fișierului fără eșec.
2. Imprimați liniile care se potrivesc cu modelul dat.
$ awk '/manager/ {print}' employee.txt>Ieșire:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>În exemplul de mai sus, comanda awk tipărește toată linia care se potrivește cu „managerul”.
3. Împărțirea unei linii în câmpuri: Pentru fiecare înregistrare, adică linie, comanda awk împarte înregistrarea delimitată de un caracter de spațiu alb în mod implicit și o stochează în variabilele $n. Dacă linia are 4 cuvinte, va fi stocată în $1, $2, $3 și, respectiv, $4. De asemenea, $0 reprezintă întreaga linie.
$ awk '{print $1,$4}' employee.txt>Ieșire:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>În exemplul de mai sus, $1 și $4 reprezintă câmpurile Nume și, respectiv, Salariu.
Variabile încorporate în Awk
Variabilele încorporate ale lui Awk includ variabilele de câmp — $1, $2, $3 și așa mai departe ($0 este întreaga linie) — care despart o linie de text în cuvinte individuale sau bucăți numite câmpuri.
NR: Comanda NR păstrează un număr curent al numărului de înregistrări de intrare. Amintiți-vă că înregistrările sunt de obicei linii. Comanda Awk execută instrucțiunile de tipar/acțiune o dată pentru fiecare înregistrare dintr-un fișier. NF: Comanda NF păstrează o contorizare a numărului de câmpuri din înregistrarea curentă de intrare. FS: Comanda FS conține caracterul separator de câmpuri care este folosit pentru a împărți câmpurile pe linia de intrare. Valoarea implicită este spațiul alb, adică spațiu și caractere de tabulație. FS poate fi reatribuit unui alt caracter (de obicei în BEGIN) pentru a schimba separatorul de câmp. RS: Comanda RS stochează caracterul separator al înregistrărilor curente. Deoarece, în mod implicit, o linie de intrare este înregistrarea de intrare, caracterul implicit de separare a înregistrărilor este o linie nouă. OFS: Comanda OFS stochează separatorul de câmpuri de ieșire, care separă câmpurile atunci când Awk le imprimă. Valoarea implicită este un spațiu liber. Ori de câte ori print are mai mulți parametri separați prin virgule, va imprima valoarea OFS între fiecare parametru. ORS: Comanda ORS stochează separatorul înregistrărilor de ieșire, care separă liniile de ieșire atunci când Awk le tipărește. Valoarea implicită este un caracter newline. print scoate automat conținutul ORS la sfârșitul oricărei date pentru imprimare.
Exemple:
Utilizarea variabilelor încorporate NR (Afișare număr de linie)
$ awk '{print NR,$0}' employee.txt>Ieșire:
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>În exemplul de mai sus, comanda awk cu NR tipărește toate liniile împreună cu numărul liniei.
Utilizarea variabilelor încorporate NF (Afișare ultimul câmp)
$ awk '{print $1,$NF}' employee.txt>Ieșire:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>În exemplul de mai sus, $1 reprezintă Nume și $NF reprezintă Salariul. Putem obține salariul folosind $NF , unde $NF reprezintă ultimul câmp.
O altă utilizare a variabilelor încorporate NR (linia de afișare de la 3 la 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt>Ieșire:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>Mai multe exemple
Pentru fișierul text dat:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>1) Pentru a imprima primul articol împreună cu numărul rândului (NR) separat cu – din fiecare rând în geeksforgeeks.txt:
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt>1 - A 2 - Tarun 3 – Manav 4 - Praveen>2) Pentru a returna a doua coloană/articol de pe geeksforgeeks.txt:
Întrebarea ar trebui să fie: - Pentru a returna a doua coloană/articol de pe geeksforgeeks.txt:
$ awk '{print $2}' geeksforgeeks.txt>B A12 B6 M42>3) Pentru a imprima orice linie care nu este goală, dacă este prezentă
$ awk 'NF <0' geeksforgeeks.txt>aici NF ar trebui să fie 0 nu mai mic decât și utilizatorul trebuie să imprime și numărul liniei:
răspuns corect: awk ‘NF == 0 {print NR}’ geeksforgeeks.txt
SAU
awk „NF <= 0 {print NR}” geeksforgeeks.txt
0>4) Pentru a găsi lungimea celei mai lungi linii prezente în fișier:
$ awk '{ if (length($0)>max) max = lungime ($0) } END { print max }' geeksforgeeks.txt>13>5) Pentru a număra liniile dintr-un fișier:
$ awk 'END { print NR }' geeksforgeeks.txt>3>6) Imprimarea liniilor cu mai mult de 10 caractere:
$ awk 'length($0)>10' geeksforgeeks.txt>>>$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt> 8) Pentru a imprima pătratele primelor numere de la 1 la n spuneți 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>$ awk '{ if( == 'B6') print Awk este un limbaj de scripting folosit pentru manipularea datelor și generarea de rapoarte. Limbajul de programare a comenzilor awk nu necesită compilare și permite utilizatorului să utilizeze variabile, funcții numerice, funcții șir și operatori logici.
Awk este un utilitar care permite unui programator să scrie programe mici, dar eficiente, sub formă de instrucțiuni care definesc modele de text care trebuie căutate în fiecare linie a unui document și acțiunea care trebuie întreprinsă atunci când se găsește o potrivire într-un document. linia. Awk este folosit mai ales pentru scanarea și procesarea modelelor. Acesta caută unul sau mai multe fișiere pentru a vedea dacă acestea conțin linii care se potrivesc cu modelele specificate și apoi efectuează acțiunile asociate.
Awk este prescurtat de la numele dezvoltatorilor - Aho, Weinberger și Kernighan.
CE PUTEM FACE CU AWK?
1. Operațiuni AWK:
(a) Scanează un fișier linie cu linie
(b) Împarte fiecare linie de intrare în câmpuri
(c) Compară linia/câmpurile de intrare cu modelul
(d) Efectuează acțiuni pe liniile potrivite2. Util pentru:
(a) Transformați fișierele de date
(b) Produceți rapoarte formatate3. Construcții de programare:
(a) Formatați liniile de ieșire
(b) Operații aritmetice și cu șiruri
(c) Condiționale și bucleSintaxă:
awk options 'selection _criteria {action }' input-file>fişier-ieşire>Opțiuni:
-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>Exemple de comenzi
Exemplu:
Luați în considerare următorul fișier text ca fișier de intrare pentru toate cazurile de mai jos:
$cat>angajat.txt>>>$ awk '{print}' employee.txt>
Ieșire:
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>
În exemplul de mai sus, nu este dat niciun model. Deci acțiunile sunt aplicabile tuturor liniilor. Acțiunea de tipărire fără niciun argument tipărește întreaga linie în mod implicit, deci tipărește toate liniile fișierului fără eșec.
2. Imprimați liniile care se potrivesc cu modelul dat.
$ awk '/manager/ {print}' employee.txt> Ieșire:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
În exemplul de mai sus, comanda awk tipărește toată linia care se potrivește cu „managerul”.
3. Împărțirea unei linii în câmpuri: Pentru fiecare înregistrare, adică linie, comanda awk împarte înregistrarea delimitată de un caracter de spațiu alb în mod implicit și o stochează în variabilele $n. Dacă linia are 4 cuvinte, va fi stocată în $1, $2, $3 și, respectiv, $4. De asemenea, $0 reprezintă întreaga linie.
$ awk '{print $1,$4}' employee.txt> Ieșire:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
În exemplul de mai sus, $1 și $4 reprezintă câmpurile Nume și, respectiv, Salariu.
Variabile încorporate în Awk
Variabilele încorporate ale lui Awk includ variabilele de câmp — $1, $2, $3 și așa mai departe ($0 este întreaga linie) — care despart o linie de text în cuvinte individuale sau bucăți numite câmpuri.
- NR: Comanda NR păstrează un număr curent al numărului de înregistrări de intrare. Amintiți-vă că înregistrările sunt de obicei linii. Comanda Awk execută instrucțiunile de tipar/acțiune o dată pentru fiecare înregistrare dintr-un fișier. NF: Comanda NF păstrează o contorizare a numărului de câmpuri din înregistrarea curentă de intrare. FS: Comanda FS conține caracterul separator de câmpuri care este folosit pentru a împărți câmpurile pe linia de intrare. Valoarea implicită este spațiul alb, adică spațiu și caractere de tabulație. FS poate fi reatribuit unui alt caracter (de obicei în BEGIN) pentru a schimba separatorul de câmp. RS: Comanda RS stochează caracterul separator al înregistrărilor curente. Deoarece, în mod implicit, o linie de intrare este înregistrarea de intrare, caracterul implicit de separare a înregistrărilor este o linie nouă. OFS: Comanda OFS stochează separatorul de câmpuri de ieșire, care separă câmpurile atunci când Awk le imprimă. Valoarea implicită este un spațiu liber. Ori de câte ori print are mai mulți parametri separați prin virgule, va imprima valoarea OFS între fiecare parametru. ORS: Comanda ORS stochează separatorul înregistrărilor de ieșire, care separă liniile de ieșire atunci când Awk le tipărește. Valoarea implicită este un caracter newline. print scoate automat conținutul ORS la sfârșitul oricărei date pentru imprimare.
Exemple:
Utilizarea variabilelor încorporate NR (Afișare număr de linie)
$ awk '{print NR,$0}' employee.txt> Ieșire:
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>
În exemplul de mai sus, comanda awk cu NR tipărește toate liniile împreună cu numărul liniei.
Utilizarea variabilelor încorporate NF (Afișare ultimul câmp)
$ awk '{print $1,$NF}' employee.txt> Ieșire:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
În exemplul de mai sus, $1 reprezintă Nume și $NF reprezintă Salariul. Putem obține salariul folosind $NF , unde $NF reprezintă ultimul câmp.
O altă utilizare a variabilelor încorporate NR (linia de afișare de la 3 la 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Ieșire:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Mai multe exemple
Pentru fișierul text dat:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>
1) Pentru a imprima primul articol împreună cu numărul rândului (NR) separat cu – din fiecare rând în geeksforgeeks.txt:
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Pentru a returna a doua coloană/articol de pe geeksforgeeks.txt:
Întrebarea ar trebui să fie: - Pentru a returna a doua coloană/articol de pe geeksforgeeks.txt:
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Pentru a imprima orice linie care nu este goală, dacă este prezentă
$ awk 'NF <0' geeksforgeeks.txt>
aici NF ar trebui să fie 0 nu mai mic decât și utilizatorul trebuie să imprime și numărul liniei:
răspuns corect: awk ‘NF == 0 {print NR}’ geeksforgeeks.txt
SAU
awk „NF <= 0 {print NR}” geeksforgeeks.txt
0>
4) Pentru a găsi lungimea celei mai lungi linii prezente în fișier:
$ awk '{ if (length($0)>max) max = lungime ($0) } END { print max }' geeksforgeeks.txt> 13>
5) Pentru a număra liniile dintr-un fișier:
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Imprimarea liniilor cu mai mult de 10 caractere:
$ awk 'length($0)>10' geeksforgeeks.txt>>>$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt>
8) Pentru a imprima pătratele primelor numere de la 1 la n spuneți 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>