logo

AWK komanda Unix/Linux su pavyzdžiais

Awk yra scenarijų kalba, naudojama manipuliuoti duomenimis ir generuoti ataskaitas. awk komandų programavimo kalba nereikalauja kompiliavimo ir leidžia vartotojui naudoti kintamuosius, skaitines funkcijas, eilučių funkcijas ir loginius operatorius.

Awk yra programa, leidžianti programuotojui rašyti mažas, bet veiksmingas programas teiginių pavidalu, kurie apibrėžia teksto šablonus, kurių reikia ieškoti kiekvienoje dokumento eilutėje, ir veiksmus, kurių reikia imtis, kai randama atitiktis. linija. Awk dažniausiai naudojamas raštų nuskaitymui ir apdorojimui. Ji ieško vieno ar daugiau failų, kad sužinotų, ar juose yra eilučių, atitinkančių nurodytus šablonus, ir tada atlieka susijusius veiksmus.



Awk yra sutrumpintas iš kūrėjų pavadinimų - Aho, Weinberger ir Kernighan.

KĄ GALIME DARYTI SU AWK?

1. AWK operacijos:
(a) Nuskaito failą eilutė po eilutės
(b) Padalija kiekvieną įvesties eilutę į laukus
(c) lygina įvesties eilutę / laukus su šablonu
(d) Atlieka veiksmą (-us) suderintose eilutėse



2. Naudinga:
a) Transformuokite duomenų failus
b) rengia suformatuotas ataskaitas

3. Programavimo konstrukcijos:
a) Formatuokite išvesties linijas
b) Aritmetikos ir eilučių operacijos
c) Sąlygos ir kilpos

Sintaksė:



awk options 'selection _criteria {action }' input-file>išvesties failas>

Galimybės:

-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>

Komandų pavyzdžiai

Pavyzdys:

Apsvarstykite šį tekstinį failą kaip įvesties failą visais toliau nurodytais atvejais:

$cat>darbuotojas.txt>> $ awk '{print}' employee.txt>

Išvestis:

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>

Aukščiau pateiktame pavyzdyje modelis nepateiktas. Taigi veiksmai taikomi visoms eilutėms. Veiksmo spausdinimas be jokių argumentų pagal numatytuosius nustatymus spausdina visą eilutę, todėl be klaidų spausdina visas failo eilutes.

2. Atspausdinkite eilutes, kurios atitinka nurodytą raštą.

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

Išvestis:

ar abstrakčioji klasė gali turėti konstruktorių
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>

Aukščiau pateiktame pavyzdyje komanda awk išspausdina visą eilutę, kuri atitinka „vadybininką“.

3. Linijos padalijimas į laukus : Pagal numatytuosius nustatymus kiekvienam įrašui, ty eilutei, komanda awk padalija įrašą, atskirtą tarpo simboliu, ir išsaugo jį $n kintamuosiuose. Jei eilutėje yra 4 žodžiai, ji bus saugoma atitinkamai , , ir . Be to, 0 USD reiškia visą eilutę.

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

Išvestis:

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

Aukščiau pateiktame pavyzdyje 1 USD ir 4 USD žymi atitinkamai laukus Vardas ir Atlyginimas.

Integruoti kintamieji „Awk“.

Awk integruoti kintamieji apima lauko kintamuosius – , , ir tt (

Awk yra scenarijų kalba, naudojama manipuliuoti duomenimis ir generuoti ataskaitas. awk komandų programavimo kalba nereikalauja kompiliavimo ir leidžia vartotojui naudoti kintamuosius, skaitines funkcijas, eilučių funkcijas ir loginius operatorius.

Awk yra programa, leidžianti programuotojui rašyti mažas, bet veiksmingas programas teiginių pavidalu, kurie apibrėžia teksto šablonus, kurių reikia ieškoti kiekvienoje dokumento eilutėje, ir veiksmus, kurių reikia imtis, kai randama atitiktis. linija. Awk dažniausiai naudojamas raštų nuskaitymui ir apdorojimui. Ji ieško vieno ar daugiau failų, kad sužinotų, ar juose yra eilučių, atitinkančių nurodytus šablonus, ir tada atlieka susijusius veiksmus.

Awk yra sutrumpintas iš kūrėjų pavadinimų - Aho, Weinberger ir Kernighan.

KĄ GALIME DARYTI SU AWK?

1. AWK operacijos:
(a) Nuskaito failą eilutė po eilutės
(b) Padalija kiekvieną įvesties eilutę į laukus
(c) lygina įvesties eilutę / laukus su šablonu
(d) Atlieka veiksmą (-us) suderintose eilutėse

2. Naudinga:
a) Transformuokite duomenų failus
b) rengia suformatuotas ataskaitas

3. Programavimo konstrukcijos:
a) Formatuokite išvesties linijas
b) Aritmetikos ir eilučių operacijos
c) Sąlygos ir kilpos

Sintaksė:

awk options 'selection _criteria {action }' input-file>išvesties failas>

Galimybės:

-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>

Komandų pavyzdžiai

Pavyzdys:

Apsvarstykite šį tekstinį failą kaip įvesties failą visais toliau nurodytais atvejais:

$cat>darbuotojas.txt>> $ awk '{print}' employee.txt>

Išvestis:

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>

Aukščiau pateiktame pavyzdyje modelis nepateiktas. Taigi veiksmai taikomi visoms eilutėms. Veiksmo spausdinimas be jokių argumentų pagal numatytuosius nustatymus spausdina visą eilutę, todėl be klaidų spausdina visas failo eilutes.

2. Atspausdinkite eilutes, kurios atitinka nurodytą raštą.

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

Išvestis:

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

Aukščiau pateiktame pavyzdyje komanda awk išspausdina visą eilutę, kuri atitinka „vadybininką“.

3. Linijos padalijimas į laukus : Pagal numatytuosius nustatymus kiekvienam įrašui, ty eilutei, komanda awk padalija įrašą, atskirtą tarpo simboliu, ir išsaugo jį $n kintamuosiuose. Jei eilutėje yra 4 žodžiai, ji bus saugoma atitinkamai $1, $2, $3 ir $4. Be to, 0 USD reiškia visą eilutę.

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

Išvestis:

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

Aukščiau pateiktame pavyzdyje 1 USD ir 4 USD žymi atitinkamai laukus Vardas ir Atlyginimas.

Integruoti kintamieji „Awk“.

Awk integruoti kintamieji apima lauko kintamuosius – $1, $2, $3 ir tt ($0 yra visa eilutė), kurie suskaido teksto eilutę į atskirus žodžius arba dalis, vadinamus laukais.

    NR: NR komanda saugo dabartinį įvesties įrašų skaičių. Atminkite, kad įrašai dažniausiai yra eilutės. Awk komanda atlieka šablono / veiksmo sakinius vieną kartą kiekvienam failo įrašui. NF: NF komanda skaičiuoja laukų skaičių dabartiniame įvesties įraše. FS: FS komandoje yra lauko skyriklio simbolis, kuris naudojamas laukams padalinti įvesties eilutėje. Numatytasis yra tarpas, reiškiantis tarpo ir tabuliavimo simbolius. FS gali būti perskirtas kitam simboliui (paprastai BEGIN), kad būtų pakeistas lauko skyriklis. RS: RS komanda išsaugo esamą įrašo skyriklio simbolį. Kadangi pagal numatytuosius nustatymus įvesties eilutė yra įvesties įrašas, numatytasis įrašo skyriklio simbolis yra nauja eilutė. OFS: OFS komanda saugo išvesties lauko skyriklį, kuris atskiria laukus, kai Awk juos spausdina. Numatytoji reikšmė yra tuščia vieta. Kai spausdinant yra keli parametrai, atskirti kableliais, tarp kiekvieno parametro bus spausdinama OFS reikšmė. ORS: komanda ORS saugo išvesties įrašo skyriklį, kuris atskiria išvesties eilutes, kai Awk jas spausdina. Numatytasis yra naujos eilutės simbolis. print automatiškai išveda ORS turinį to, kas jam duota spausdinti.

Pavyzdžiai:

NR įtaisytųjų kintamųjų naudojimas (pateikti eilutės numerį)

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

Išvestis:

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>

Aukščiau pateiktame pavyzdyje awk komanda su NR spausdina visas eilutes kartu su eilutės numeriu.

NF įtaisytųjų kintamųjų naudojimas (Rodyti paskutinį lauką)

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

Išvestis:

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

Aukščiau pateiktame pavyzdyje $1 reiškia vardą, o $NF – atlyginimą. Atlyginimą galime gauti naudodami $NF , kur $NF reiškia paskutinį lauką.

Kitas NR įtaisytųjų kintamųjų naudojimas (vaizdo eilutė nuo 3 iki 6)

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

Išvestis:

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

Daugiau pavyzdžių

Pateiktam tekstiniam failui:

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

1) Iš kiekvienos geeksforgeeks.txt eilutės spausdinti pirmąjį elementą kartu su eilutės numeriu (NR), atskirtu simboliu –:

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

2) Norėdami grąžinti antrąjį stulpelį / elementą iš geeksforgeeks.txt:

Klausimas turėtų būti toks: – Norėdami grąžinti antrąjį stulpelį / elementą iš geeksforgeeks.txt:

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

3) Atspausdinti bet kokią netuščią eilutę, jei yra

$ awk 'NF <0' geeksforgeeks.txt>

čia NF turi būti ne mažesnis kaip 0 ir vartotojas taip pat turi atspausdinti eilutės numerį:

teisingas atsakymas: awk ‘NF == 0 {spausdinti NR}’ geeksforgeeks.txt

ARBA

awk „NF <= 0 {spausdinti NR}“ geeksforgeeks.txt

0>

4) Norėdami rasti ilgiausios failo eilutės ilgį:

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

5) Norėdami suskaičiuoti failo eilutes:

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

6) Daugiau nei 10 simbolių turinčių eilučių spausdinimas:

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

8) Norėdami atspausdinti pirmųjų skaičių nuo 1 iki n kvadratus, pasakykite 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>


yra visa eilutė), kurie suskaido teksto eilutę į atskirus žodžius arba dalis, vadinamus laukais.

    NR: NR komanda saugo dabartinį įvesties įrašų skaičių. Atminkite, kad įrašai dažniausiai yra eilutės. Awk komanda atlieka šablono / veiksmo sakinius vieną kartą kiekvienam failo įrašui. NF: NF komanda skaičiuoja laukų skaičių dabartiniame įvesties įraše. FS: FS komandoje yra lauko skyriklio simbolis, kuris naudojamas laukams padalinti įvesties eilutėje. Numatytasis yra tarpas, reiškiantis tarpo ir tabuliavimo simbolius. FS gali būti perskirtas kitam simboliui (paprastai BEGIN), kad būtų pakeistas lauko skyriklis. RS: RS komanda išsaugo esamą įrašo skyriklio simbolį. Kadangi pagal numatytuosius nustatymus įvesties eilutė yra įvesties įrašas, numatytasis įrašo skyriklio simbolis yra nauja eilutė. OFS: OFS komanda saugo išvesties lauko skyriklį, kuris atskiria laukus, kai Awk juos spausdina. Numatytoji reikšmė yra tuščia vieta. Kai spausdinant yra keli parametrai, atskirti kableliais, tarp kiekvieno parametro bus spausdinama OFS reikšmė. ORS: komanda ORS saugo išvesties įrašo skyriklį, kuris atskiria išvesties eilutes, kai Awk jas spausdina. Numatytasis yra naujos eilutės simbolis. print automatiškai išveda ORS turinį to, kas jam duota spausdinti.

Pavyzdžiai:

NR įtaisytųjų kintamųjų naudojimas (pateikti eilutės numerį)

$ awk '{print NR,

Awk yra scenarijų kalba, naudojama manipuliuoti duomenimis ir generuoti ataskaitas. awk komandų programavimo kalba nereikalauja kompiliavimo ir leidžia vartotojui naudoti kintamuosius, skaitines funkcijas, eilučių funkcijas ir loginius operatorius.

Awk yra programa, leidžianti programuotojui rašyti mažas, bet veiksmingas programas teiginių pavidalu, kurie apibrėžia teksto šablonus, kurių reikia ieškoti kiekvienoje dokumento eilutėje, ir veiksmus, kurių reikia imtis, kai randama atitiktis. linija. Awk dažniausiai naudojamas raštų nuskaitymui ir apdorojimui. Ji ieško vieno ar daugiau failų, kad sužinotų, ar juose yra eilučių, atitinkančių nurodytus šablonus, ir tada atlieka susijusius veiksmus.

Awk yra sutrumpintas iš kūrėjų pavadinimų - Aho, Weinberger ir Kernighan.

KĄ GALIME DARYTI SU AWK?

1. AWK operacijos:
(a) Nuskaito failą eilutė po eilutės
(b) Padalija kiekvieną įvesties eilutę į laukus
(c) lygina įvesties eilutę / laukus su šablonu
(d) Atlieka veiksmą (-us) suderintose eilutėse

2. Naudinga:
a) Transformuokite duomenų failus
b) rengia suformatuotas ataskaitas

3. Programavimo konstrukcijos:
a) Formatuokite išvesties linijas
b) Aritmetikos ir eilučių operacijos
c) Sąlygos ir kilpos

Sintaksė:

awk options 'selection _criteria {action }' input-file>išvesties failas>

Galimybės:

-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>

Komandų pavyzdžiai

Pavyzdys:

Apsvarstykite šį tekstinį failą kaip įvesties failą visais toliau nurodytais atvejais:

$cat>darbuotojas.txt>> $ awk '{print}' employee.txt>

Išvestis:

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>

Aukščiau pateiktame pavyzdyje modelis nepateiktas. Taigi veiksmai taikomi visoms eilutėms. Veiksmo spausdinimas be jokių argumentų pagal numatytuosius nustatymus spausdina visą eilutę, todėl be klaidų spausdina visas failo eilutes.

2. Atspausdinkite eilutes, kurios atitinka nurodytą raštą.

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

Išvestis:

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

Aukščiau pateiktame pavyzdyje komanda awk išspausdina visą eilutę, kuri atitinka „vadybininką“.

3. Linijos padalijimas į laukus : Pagal numatytuosius nustatymus kiekvienam įrašui, ty eilutei, komanda awk padalija įrašą, atskirtą tarpo simboliu, ir išsaugo jį $n kintamuosiuose. Jei eilutėje yra 4 žodžiai, ji bus saugoma atitinkamai $1, $2, $3 ir $4. Be to, 0 USD reiškia visą eilutę.

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

Išvestis:

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

Aukščiau pateiktame pavyzdyje 1 USD ir 4 USD žymi atitinkamai laukus Vardas ir Atlyginimas.

Integruoti kintamieji „Awk“.

Awk integruoti kintamieji apima lauko kintamuosius – $1, $2, $3 ir tt ($0 yra visa eilutė), kurie suskaido teksto eilutę į atskirus žodžius arba dalis, vadinamus laukais.

    NR: NR komanda saugo dabartinį įvesties įrašų skaičių. Atminkite, kad įrašai dažniausiai yra eilutės. Awk komanda atlieka šablono / veiksmo sakinius vieną kartą kiekvienam failo įrašui. NF: NF komanda skaičiuoja laukų skaičių dabartiniame įvesties įraše. FS: FS komandoje yra lauko skyriklio simbolis, kuris naudojamas laukams padalinti įvesties eilutėje. Numatytasis yra tarpas, reiškiantis tarpo ir tabuliavimo simbolius. FS gali būti perskirtas kitam simboliui (paprastai BEGIN), kad būtų pakeistas lauko skyriklis. RS: RS komanda išsaugo esamą įrašo skyriklio simbolį. Kadangi pagal numatytuosius nustatymus įvesties eilutė yra įvesties įrašas, numatytasis įrašo skyriklio simbolis yra nauja eilutė. OFS: OFS komanda saugo išvesties lauko skyriklį, kuris atskiria laukus, kai Awk juos spausdina. Numatytoji reikšmė yra tuščia vieta. Kai spausdinant yra keli parametrai, atskirti kableliais, tarp kiekvieno parametro bus spausdinama OFS reikšmė. ORS: komanda ORS saugo išvesties įrašo skyriklį, kuris atskiria išvesties eilutes, kai Awk jas spausdina. Numatytasis yra naujos eilutės simbolis. print automatiškai išveda ORS turinį to, kas jam duota spausdinti.

Pavyzdžiai:

NR įtaisytųjų kintamųjų naudojimas (pateikti eilutės numerį)

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

Išvestis:

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>

Aukščiau pateiktame pavyzdyje awk komanda su NR spausdina visas eilutes kartu su eilutės numeriu.

NF įtaisytųjų kintamųjų naudojimas (Rodyti paskutinį lauką)

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

Išvestis:

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

Aukščiau pateiktame pavyzdyje $1 reiškia vardą, o $NF – atlyginimą. Atlyginimą galime gauti naudodami $NF , kur $NF reiškia paskutinį lauką.

Kitas NR įtaisytųjų kintamųjų naudojimas (vaizdo eilutė nuo 3 iki 6)

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

Išvestis:

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

Daugiau pavyzdžių

Pateiktam tekstiniam failui:

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

1) Iš kiekvienos geeksforgeeks.txt eilutės spausdinti pirmąjį elementą kartu su eilutės numeriu (NR), atskirtu simboliu –:

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

2) Norėdami grąžinti antrąjį stulpelį / elementą iš geeksforgeeks.txt:

Klausimas turėtų būti toks: – Norėdami grąžinti antrąjį stulpelį / elementą iš geeksforgeeks.txt:

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

3) Atspausdinti bet kokią netuščią eilutę, jei yra

$ awk 'NF <0' geeksforgeeks.txt>

čia NF turi būti ne mažesnis kaip 0 ir vartotojas taip pat turi atspausdinti eilutės numerį:

teisingas atsakymas: awk ‘NF == 0 {spausdinti NR}’ geeksforgeeks.txt

ARBA

awk „NF <= 0 {spausdinti NR}“ geeksforgeeks.txt

0>

4) Norėdami rasti ilgiausios failo eilutės ilgį:

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

5) Norėdami suskaičiuoti failo eilutes:

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

6) Daugiau nei 10 simbolių turinčių eilučių spausdinimas:

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

8) Norėdami atspausdinti pirmųjų skaičių nuo 1 iki n kvadratus, pasakykite 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>

Išvestis:

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>

Aukščiau pateiktame pavyzdyje awk komanda su NR spausdina visas eilutes kartu su eilutės numeriu.

NF įtaisytųjų kintamųjų naudojimas (Rodyti paskutinį lauką)

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

Išvestis:

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

Aukščiau pateiktame pavyzdyje reiškia vardą, o $NF – atlyginimą. Atlyginimą galime gauti naudodami $NF , kur $NF reiškia paskutinį lauką.

statinis c

Kitas NR įtaisytųjų kintamųjų naudojimas (vaizdo eilutė nuo 3 iki 6)

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

Awk yra scenarijų kalba, naudojama manipuliuoti duomenimis ir generuoti ataskaitas. awk komandų programavimo kalba nereikalauja kompiliavimo ir leidžia vartotojui naudoti kintamuosius, skaitines funkcijas, eilučių funkcijas ir loginius operatorius.

Awk yra programa, leidžianti programuotojui rašyti mažas, bet veiksmingas programas teiginių pavidalu, kurie apibrėžia teksto šablonus, kurių reikia ieškoti kiekvienoje dokumento eilutėje, ir veiksmus, kurių reikia imtis, kai randama atitiktis. linija. Awk dažniausiai naudojamas raštų nuskaitymui ir apdorojimui. Ji ieško vieno ar daugiau failų, kad sužinotų, ar juose yra eilučių, atitinkančių nurodytus šablonus, ir tada atlieka susijusius veiksmus.

Awk yra sutrumpintas iš kūrėjų pavadinimų - Aho, Weinberger ir Kernighan.

KĄ GALIME DARYTI SU AWK?

1. AWK operacijos:
(a) Nuskaito failą eilutė po eilutės
(b) Padalija kiekvieną įvesties eilutę į laukus
(c) lygina įvesties eilutę / laukus su šablonu
(d) Atlieka veiksmą (-us) suderintose eilutėse

2. Naudinga:
a) Transformuokite duomenų failus
b) rengia suformatuotas ataskaitas

3. Programavimo konstrukcijos:
a) Formatuokite išvesties linijas
b) Aritmetikos ir eilučių operacijos
c) Sąlygos ir kilpos

Sintaksė:

awk options 'selection _criteria {action }' input-file>išvesties failas>

Galimybės:

-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>

Komandų pavyzdžiai

Pavyzdys:

Apsvarstykite šį tekstinį failą kaip įvesties failą visais toliau nurodytais atvejais:

$cat>darbuotojas.txt>> $ awk '{print}' employee.txt>

Išvestis:

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>

Aukščiau pateiktame pavyzdyje modelis nepateiktas. Taigi veiksmai taikomi visoms eilutėms. Veiksmo spausdinimas be jokių argumentų pagal numatytuosius nustatymus spausdina visą eilutę, todėl be klaidų spausdina visas failo eilutes.

2. Atspausdinkite eilutes, kurios atitinka nurodytą raštą.

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

Išvestis:

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

Aukščiau pateiktame pavyzdyje komanda awk išspausdina visą eilutę, kuri atitinka „vadybininką“.

3. Linijos padalijimas į laukus : Pagal numatytuosius nustatymus kiekvienam įrašui, ty eilutei, komanda awk padalija įrašą, atskirtą tarpo simboliu, ir išsaugo jį $n kintamuosiuose. Jei eilutėje yra 4 žodžiai, ji bus saugoma atitinkamai $1, $2, $3 ir $4. Be to, 0 USD reiškia visą eilutę.

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

Išvestis:

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

Aukščiau pateiktame pavyzdyje 1 USD ir 4 USD žymi atitinkamai laukus Vardas ir Atlyginimas.

Integruoti kintamieji „Awk“.

Awk integruoti kintamieji apima lauko kintamuosius – $1, $2, $3 ir tt ($0 yra visa eilutė), kurie suskaido teksto eilutę į atskirus žodžius arba dalis, vadinamus laukais.

    NR: NR komanda saugo dabartinį įvesties įrašų skaičių. Atminkite, kad įrašai dažniausiai yra eilutės. Awk komanda atlieka šablono / veiksmo sakinius vieną kartą kiekvienam failo įrašui. NF: NF komanda skaičiuoja laukų skaičių dabartiniame įvesties įraše. FS: FS komandoje yra lauko skyriklio simbolis, kuris naudojamas laukams padalinti įvesties eilutėje. Numatytasis yra tarpas, reiškiantis tarpo ir tabuliavimo simbolius. FS gali būti perskirtas kitam simboliui (paprastai BEGIN), kad būtų pakeistas lauko skyriklis. RS: RS komanda išsaugo esamą įrašo skyriklio simbolį. Kadangi pagal numatytuosius nustatymus įvesties eilutė yra įvesties įrašas, numatytasis įrašo skyriklio simbolis yra nauja eilutė. OFS: OFS komanda saugo išvesties lauko skyriklį, kuris atskiria laukus, kai Awk juos spausdina. Numatytoji reikšmė yra tuščia vieta. Kai spausdinant yra keli parametrai, atskirti kableliais, tarp kiekvieno parametro bus spausdinama OFS reikšmė. ORS: komanda ORS saugo išvesties įrašo skyriklį, kuris atskiria išvesties eilutes, kai Awk jas spausdina. Numatytasis yra naujos eilutės simbolis. print automatiškai išveda ORS turinį to, kas jam duota spausdinti.

Pavyzdžiai:

NR įtaisytųjų kintamųjų naudojimas (pateikti eilutės numerį)

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

Išvestis:

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>

Aukščiau pateiktame pavyzdyje awk komanda su NR spausdina visas eilutes kartu su eilutės numeriu.

NF įtaisytųjų kintamųjų naudojimas (Rodyti paskutinį lauką)

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

Išvestis:

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

Aukščiau pateiktame pavyzdyje $1 reiškia vardą, o $NF – atlyginimą. Atlyginimą galime gauti naudodami $NF , kur $NF reiškia paskutinį lauką.

Kitas NR įtaisytųjų kintamųjų naudojimas (vaizdo eilutė nuo 3 iki 6)

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

Išvestis:

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

Daugiau pavyzdžių

Pateiktam tekstiniam failui:

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

1) Iš kiekvienos geeksforgeeks.txt eilutės spausdinti pirmąjį elementą kartu su eilutės numeriu (NR), atskirtu simboliu –:

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

2) Norėdami grąžinti antrąjį stulpelį / elementą iš geeksforgeeks.txt:

Klausimas turėtų būti toks: – Norėdami grąžinti antrąjį stulpelį / elementą iš geeksforgeeks.txt:

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

3) Atspausdinti bet kokią netuščią eilutę, jei yra

$ awk 'NF <0' geeksforgeeks.txt>

čia NF turi būti ne mažesnis kaip 0 ir vartotojas taip pat turi atspausdinti eilutės numerį:

teisingas atsakymas: awk ‘NF == 0 {spausdinti NR}’ geeksforgeeks.txt

ARBA

awk „NF <= 0 {spausdinti NR}“ geeksforgeeks.txt

0>

4) Norėdami rasti ilgiausios failo eilutės ilgį:

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

5) Norėdami suskaičiuoti failo eilutes:

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

6) Daugiau nei 10 simbolių turinčių eilučių spausdinimas:

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

8) Norėdami atspausdinti pirmųjų skaičių nuo 1 iki n kvadratus, pasakykite 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>

Išvestis:

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

Daugiau pavyzdžių

Pateiktam tekstiniam failui:

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

1) Iš kiekvienos geeksforgeeks.txt eilutės spausdinti pirmąjį elementą kartu su eilutės numeriu (NR), atskirtu simboliu –:

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

2) Norėdami grąžinti antrąjį stulpelį / elementą iš geeksforgeeks.txt:

Klausimas turėtų būti toks: – Norėdami grąžinti antrąjį stulpelį / elementą iš geeksforgeeks.txt:

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

3) Atspausdinti bet kokią netuščią eilutę, jei yra

$ awk 'NF <0' geeksforgeeks.txt>

čia NF turi būti ne mažesnis kaip 0 ir vartotojas taip pat turi atspausdinti eilutės numerį:

teisingas atsakymas: awk ‘NF == 0 {spausdinti NR}’ geeksforgeeks.txt

ARBA

awk „NF <= 0 {spausdinti NR}“ geeksforgeeks.txt

0>

4) Norėdami rasti ilgiausios failo eilutės ilgį:

$ awk '{ if (length(

Awk yra scenarijų kalba, naudojama manipuliuoti duomenimis ir generuoti ataskaitas. awk komandų programavimo kalba nereikalauja kompiliavimo ir leidžia vartotojui naudoti kintamuosius, skaitines funkcijas, eilučių funkcijas ir loginius operatorius.

Awk yra programa, leidžianti programuotojui rašyti mažas, bet veiksmingas programas teiginių pavidalu, kurie apibrėžia teksto šablonus, kurių reikia ieškoti kiekvienoje dokumento eilutėje, ir veiksmus, kurių reikia imtis, kai randama atitiktis. linija. Awk dažniausiai naudojamas raštų nuskaitymui ir apdorojimui. Ji ieško vieno ar daugiau failų, kad sužinotų, ar juose yra eilučių, atitinkančių nurodytus šablonus, ir tada atlieka susijusius veiksmus.

Awk yra sutrumpintas iš kūrėjų pavadinimų - Aho, Weinberger ir Kernighan.

KĄ GALIME DARYTI SU AWK?

1. AWK operacijos:
(a) Nuskaito failą eilutė po eilutės
(b) Padalija kiekvieną įvesties eilutę į laukus
(c) lygina įvesties eilutę / laukus su šablonu
(d) Atlieka veiksmą (-us) suderintose eilutėse

2. Naudinga:
a) Transformuokite duomenų failus
b) rengia suformatuotas ataskaitas

3. Programavimo konstrukcijos:
a) Formatuokite išvesties linijas
b) Aritmetikos ir eilučių operacijos
c) Sąlygos ir kilpos

Sintaksė:

awk options 'selection _criteria {action }' input-file>išvesties failas>

Galimybės:

-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>

Komandų pavyzdžiai

Pavyzdys:

Apsvarstykite šį tekstinį failą kaip įvesties failą visais toliau nurodytais atvejais:

$cat>darbuotojas.txt>> $ awk '{print}' employee.txt>

Išvestis:

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>

Aukščiau pateiktame pavyzdyje modelis nepateiktas. Taigi veiksmai taikomi visoms eilutėms. Veiksmo spausdinimas be jokių argumentų pagal numatytuosius nustatymus spausdina visą eilutę, todėl be klaidų spausdina visas failo eilutes.

2. Atspausdinkite eilutes, kurios atitinka nurodytą raštą.

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

Išvestis:

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

Aukščiau pateiktame pavyzdyje komanda awk išspausdina visą eilutę, kuri atitinka „vadybininką“.

3. Linijos padalijimas į laukus : Pagal numatytuosius nustatymus kiekvienam įrašui, ty eilutei, komanda awk padalija įrašą, atskirtą tarpo simboliu, ir išsaugo jį $n kintamuosiuose. Jei eilutėje yra 4 žodžiai, ji bus saugoma atitinkamai $1, $2, $3 ir $4. Be to, 0 USD reiškia visą eilutę.

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

Išvestis:

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

Aukščiau pateiktame pavyzdyje 1 USD ir 4 USD žymi atitinkamai laukus Vardas ir Atlyginimas.

Integruoti kintamieji „Awk“.

Awk integruoti kintamieji apima lauko kintamuosius – $1, $2, $3 ir tt ($0 yra visa eilutė), kurie suskaido teksto eilutę į atskirus žodžius arba dalis, vadinamus laukais.

    NR: NR komanda saugo dabartinį įvesties įrašų skaičių. Atminkite, kad įrašai dažniausiai yra eilutės. Awk komanda atlieka šablono / veiksmo sakinius vieną kartą kiekvienam failo įrašui. NF: NF komanda skaičiuoja laukų skaičių dabartiniame įvesties įraše. FS: FS komandoje yra lauko skyriklio simbolis, kuris naudojamas laukams padalinti įvesties eilutėje. Numatytasis yra tarpas, reiškiantis tarpo ir tabuliavimo simbolius. FS gali būti perskirtas kitam simboliui (paprastai BEGIN), kad būtų pakeistas lauko skyriklis. RS: RS komanda išsaugo esamą įrašo skyriklio simbolį. Kadangi pagal numatytuosius nustatymus įvesties eilutė yra įvesties įrašas, numatytasis įrašo skyriklio simbolis yra nauja eilutė. OFS: OFS komanda saugo išvesties lauko skyriklį, kuris atskiria laukus, kai Awk juos spausdina. Numatytoji reikšmė yra tuščia vieta. Kai spausdinant yra keli parametrai, atskirti kableliais, tarp kiekvieno parametro bus spausdinama OFS reikšmė. ORS: komanda ORS saugo išvesties įrašo skyriklį, kuris atskiria išvesties eilutes, kai Awk jas spausdina. Numatytasis yra naujos eilutės simbolis. print automatiškai išveda ORS turinį to, kas jam duota spausdinti.

Pavyzdžiai:

NR įtaisytųjų kintamųjų naudojimas (pateikti eilutės numerį)

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

Išvestis:

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>

Aukščiau pateiktame pavyzdyje awk komanda su NR spausdina visas eilutes kartu su eilutės numeriu.

NF įtaisytųjų kintamųjų naudojimas (Rodyti paskutinį lauką)

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

Išvestis:

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

Aukščiau pateiktame pavyzdyje $1 reiškia vardą, o $NF – atlyginimą. Atlyginimą galime gauti naudodami $NF , kur $NF reiškia paskutinį lauką.

Kitas NR įtaisytųjų kintamųjų naudojimas (vaizdo eilutė nuo 3 iki 6)

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

Išvestis:

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

Daugiau pavyzdžių

Pateiktam tekstiniam failui:

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

1) Iš kiekvienos geeksforgeeks.txt eilutės spausdinti pirmąjį elementą kartu su eilutės numeriu (NR), atskirtu simboliu –:

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

2) Norėdami grąžinti antrąjį stulpelį / elementą iš geeksforgeeks.txt:

Klausimas turėtų būti toks: – Norėdami grąžinti antrąjį stulpelį / elementą iš geeksforgeeks.txt:

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

3) Atspausdinti bet kokią netuščią eilutę, jei yra

$ awk 'NF <0' geeksforgeeks.txt>

čia NF turi būti ne mažesnis kaip 0 ir vartotojas taip pat turi atspausdinti eilutės numerį:

teisingas atsakymas: awk ‘NF == 0 {spausdinti NR}’ geeksforgeeks.txt

ARBA

awk „NF <= 0 {spausdinti NR}“ geeksforgeeks.txt

0>

4) Norėdami rasti ilgiausios failo eilutės ilgį:

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

5) Norėdami suskaičiuoti failo eilutes:

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

6) Daugiau nei 10 simbolių turinčių eilučių spausdinimas:

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

8) Norėdami atspausdinti pirmųjų skaičių nuo 1 iki n kvadratus, pasakykite 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 = ilgis(

Awk yra scenarijų kalba, naudojama manipuliuoti duomenimis ir generuoti ataskaitas. awk komandų programavimo kalba nereikalauja kompiliavimo ir leidžia vartotojui naudoti kintamuosius, skaitines funkcijas, eilučių funkcijas ir loginius operatorius.

Awk yra programa, leidžianti programuotojui rašyti mažas, bet veiksmingas programas teiginių pavidalu, kurie apibrėžia teksto šablonus, kurių reikia ieškoti kiekvienoje dokumento eilutėje, ir veiksmus, kurių reikia imtis, kai randama atitiktis. linija. Awk dažniausiai naudojamas raštų nuskaitymui ir apdorojimui. Ji ieško vieno ar daugiau failų, kad sužinotų, ar juose yra eilučių, atitinkančių nurodytus šablonus, ir tada atlieka susijusius veiksmus.

Awk yra sutrumpintas iš kūrėjų pavadinimų - Aho, Weinberger ir Kernighan.

KĄ GALIME DARYTI SU AWK?

1. AWK operacijos:
(a) Nuskaito failą eilutė po eilutės
(b) Padalija kiekvieną įvesties eilutę į laukus
(c) lygina įvesties eilutę / laukus su šablonu
(d) Atlieka veiksmą (-us) suderintose eilutėse

2. Naudinga:
a) Transformuokite duomenų failus
b) rengia suformatuotas ataskaitas

3. Programavimo konstrukcijos:
a) Formatuokite išvesties linijas
b) Aritmetikos ir eilučių operacijos
c) Sąlygos ir kilpos

Sintaksė:

awk options 'selection _criteria {action }' input-file>išvesties failas>

Galimybės:

-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>

Komandų pavyzdžiai

Pavyzdys:

Apsvarstykite šį tekstinį failą kaip įvesties failą visais toliau nurodytais atvejais:

$cat>darbuotojas.txt>> $ awk '{print}' employee.txt>

Išvestis:

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>

Aukščiau pateiktame pavyzdyje modelis nepateiktas. Taigi veiksmai taikomi visoms eilutėms. Veiksmo spausdinimas be jokių argumentų pagal numatytuosius nustatymus spausdina visą eilutę, todėl be klaidų spausdina visas failo eilutes.

2. Atspausdinkite eilutes, kurios atitinka nurodytą raštą.

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

Išvestis:

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

Aukščiau pateiktame pavyzdyje komanda awk išspausdina visą eilutę, kuri atitinka „vadybininką“.

3. Linijos padalijimas į laukus : Pagal numatytuosius nustatymus kiekvienam įrašui, ty eilutei, komanda awk padalija įrašą, atskirtą tarpo simboliu, ir išsaugo jį $n kintamuosiuose. Jei eilutėje yra 4 žodžiai, ji bus saugoma atitinkamai $1, $2, $3 ir $4. Be to, 0 USD reiškia visą eilutę.

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

Išvestis:

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

Aukščiau pateiktame pavyzdyje 1 USD ir 4 USD žymi atitinkamai laukus Vardas ir Atlyginimas.

Integruoti kintamieji „Awk“.

Awk integruoti kintamieji apima lauko kintamuosius – $1, $2, $3 ir tt ($0 yra visa eilutė), kurie suskaido teksto eilutę į atskirus žodžius arba dalis, vadinamus laukais.

    NR: NR komanda saugo dabartinį įvesties įrašų skaičių. Atminkite, kad įrašai dažniausiai yra eilutės. Awk komanda atlieka šablono / veiksmo sakinius vieną kartą kiekvienam failo įrašui. NF: NF komanda skaičiuoja laukų skaičių dabartiniame įvesties įraše. FS: FS komandoje yra lauko skyriklio simbolis, kuris naudojamas laukams padalinti įvesties eilutėje. Numatytasis yra tarpas, reiškiantis tarpo ir tabuliavimo simbolius. FS gali būti perskirtas kitam simboliui (paprastai BEGIN), kad būtų pakeistas lauko skyriklis. RS: RS komanda išsaugo esamą įrašo skyriklio simbolį. Kadangi pagal numatytuosius nustatymus įvesties eilutė yra įvesties įrašas, numatytasis įrašo skyriklio simbolis yra nauja eilutė. OFS: OFS komanda saugo išvesties lauko skyriklį, kuris atskiria laukus, kai Awk juos spausdina. Numatytoji reikšmė yra tuščia vieta. Kai spausdinant yra keli parametrai, atskirti kableliais, tarp kiekvieno parametro bus spausdinama OFS reikšmė. ORS: komanda ORS saugo išvesties įrašo skyriklį, kuris atskiria išvesties eilutes, kai Awk jas spausdina. Numatytasis yra naujos eilutės simbolis. print automatiškai išveda ORS turinį to, kas jam duota spausdinti.

Pavyzdžiai:

NR įtaisytųjų kintamųjų naudojimas (pateikti eilutės numerį)

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

Išvestis:

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>

Aukščiau pateiktame pavyzdyje awk komanda su NR spausdina visas eilutes kartu su eilutės numeriu.

NF įtaisytųjų kintamųjų naudojimas (Rodyti paskutinį lauką)

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

Išvestis:

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

Aukščiau pateiktame pavyzdyje $1 reiškia vardą, o $NF – atlyginimą. Atlyginimą galime gauti naudodami $NF , kur $NF reiškia paskutinį lauką.

Kitas NR įtaisytųjų kintamųjų naudojimas (vaizdo eilutė nuo 3 iki 6)

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

Išvestis:

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

Daugiau pavyzdžių

Pateiktam tekstiniam failui:

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

1) Iš kiekvienos geeksforgeeks.txt eilutės spausdinti pirmąjį elementą kartu su eilutės numeriu (NR), atskirtu simboliu –:

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

2) Norėdami grąžinti antrąjį stulpelį / elementą iš geeksforgeeks.txt:

Klausimas turėtų būti toks: – Norėdami grąžinti antrąjį stulpelį / elementą iš geeksforgeeks.txt:

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

3) Atspausdinti bet kokią netuščią eilutę, jei yra

$ awk 'NF <0' geeksforgeeks.txt>

čia NF turi būti ne mažesnis kaip 0 ir vartotojas taip pat turi atspausdinti eilutės numerį:

teisingas atsakymas: awk ‘NF == 0 {spausdinti NR}’ geeksforgeeks.txt

ARBA

awk „NF <= 0 {spausdinti NR}“ geeksforgeeks.txt

0>

4) Norėdami rasti ilgiausios failo eilutės ilgį:

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

5) Norėdami suskaičiuoti failo eilutes:

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

6) Daugiau nei 10 simbolių turinčių eilučių spausdinimas:

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

8) Norėdami atspausdinti pirmųjų skaičių nuo 1 iki n kvadratus, pasakykite 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) Norėdami suskaičiuoti failo eilutes:

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

6) Daugiau nei 10 simbolių turinčių eilučių spausdinimas:

$ awk 'length(

Awk yra scenarijų kalba, naudojama manipuliuoti duomenimis ir generuoti ataskaitas. awk komandų programavimo kalba nereikalauja kompiliavimo ir leidžia vartotojui naudoti kintamuosius, skaitines funkcijas, eilučių funkcijas ir loginius operatorius.

Awk yra programa, leidžianti programuotojui rašyti mažas, bet veiksmingas programas teiginių pavidalu, kurie apibrėžia teksto šablonus, kurių reikia ieškoti kiekvienoje dokumento eilutėje, ir veiksmus, kurių reikia imtis, kai randama atitiktis. linija. Awk dažniausiai naudojamas raštų nuskaitymui ir apdorojimui. Ji ieško vieno ar daugiau failų, kad sužinotų, ar juose yra eilučių, atitinkančių nurodytus šablonus, ir tada atlieka susijusius veiksmus.

Awk yra sutrumpintas iš kūrėjų pavadinimų - Aho, Weinberger ir Kernighan.

KĄ GALIME DARYTI SU AWK?

1. AWK operacijos:
(a) Nuskaito failą eilutė po eilutės
(b) Padalija kiekvieną įvesties eilutę į laukus
(c) lygina įvesties eilutę / laukus su šablonu
(d) Atlieka veiksmą (-us) suderintose eilutėse

2. Naudinga:
a) Transformuokite duomenų failus
b) rengia suformatuotas ataskaitas

3. Programavimo konstrukcijos:
a) Formatuokite išvesties linijas
b) Aritmetikos ir eilučių operacijos
c) Sąlygos ir kilpos

Sintaksė:

awk options 'selection _criteria {action }' input-file>išvesties failas>

Galimybės:

-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>

Komandų pavyzdžiai

Pavyzdys:

Apsvarstykite šį tekstinį failą kaip įvesties failą visais toliau nurodytais atvejais:

$cat>darbuotojas.txt>> $ awk '{print}' employee.txt>

Išvestis:

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>

Aukščiau pateiktame pavyzdyje modelis nepateiktas. Taigi veiksmai taikomi visoms eilutėms. Veiksmo spausdinimas be jokių argumentų pagal numatytuosius nustatymus spausdina visą eilutę, todėl be klaidų spausdina visas failo eilutes.

2. Atspausdinkite eilutes, kurios atitinka nurodytą raštą.

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

Išvestis:

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

Aukščiau pateiktame pavyzdyje komanda awk išspausdina visą eilutę, kuri atitinka „vadybininką“.

3. Linijos padalijimas į laukus : Pagal numatytuosius nustatymus kiekvienam įrašui, ty eilutei, komanda awk padalija įrašą, atskirtą tarpo simboliu, ir išsaugo jį $n kintamuosiuose. Jei eilutėje yra 4 žodžiai, ji bus saugoma atitinkamai $1, $2, $3 ir $4. Be to, 0 USD reiškia visą eilutę.

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

Išvestis:

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

Aukščiau pateiktame pavyzdyje 1 USD ir 4 USD žymi atitinkamai laukus Vardas ir Atlyginimas.

Integruoti kintamieji „Awk“.

Awk integruoti kintamieji apima lauko kintamuosius – $1, $2, $3 ir tt ($0 yra visa eilutė), kurie suskaido teksto eilutę į atskirus žodžius arba dalis, vadinamus laukais.

    NR: NR komanda saugo dabartinį įvesties įrašų skaičių. Atminkite, kad įrašai dažniausiai yra eilutės. Awk komanda atlieka šablono / veiksmo sakinius vieną kartą kiekvienam failo įrašui. NF: NF komanda skaičiuoja laukų skaičių dabartiniame įvesties įraše. FS: FS komandoje yra lauko skyriklio simbolis, kuris naudojamas laukams padalinti įvesties eilutėje. Numatytasis yra tarpas, reiškiantis tarpo ir tabuliavimo simbolius. FS gali būti perskirtas kitam simboliui (paprastai BEGIN), kad būtų pakeistas lauko skyriklis. RS: RS komanda išsaugo esamą įrašo skyriklio simbolį. Kadangi pagal numatytuosius nustatymus įvesties eilutė yra įvesties įrašas, numatytasis įrašo skyriklio simbolis yra nauja eilutė. OFS: OFS komanda saugo išvesties lauko skyriklį, kuris atskiria laukus, kai Awk juos spausdina. Numatytoji reikšmė yra tuščia vieta. Kai spausdinant yra keli parametrai, atskirti kableliais, tarp kiekvieno parametro bus spausdinama OFS reikšmė. ORS: komanda ORS saugo išvesties įrašo skyriklį, kuris atskiria išvesties eilutes, kai Awk jas spausdina. Numatytasis yra naujos eilutės simbolis. print automatiškai išveda ORS turinį to, kas jam duota spausdinti.

Pavyzdžiai:

NR įtaisytųjų kintamųjų naudojimas (pateikti eilutės numerį)

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

Išvestis:

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>

Aukščiau pateiktame pavyzdyje awk komanda su NR spausdina visas eilutes kartu su eilutės numeriu.

NF įtaisytųjų kintamųjų naudojimas (Rodyti paskutinį lauką)

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

Išvestis:

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

Aukščiau pateiktame pavyzdyje $1 reiškia vardą, o $NF – atlyginimą. Atlyginimą galime gauti naudodami $NF , kur $NF reiškia paskutinį lauką.

Kitas NR įtaisytųjų kintamųjų naudojimas (vaizdo eilutė nuo 3 iki 6)

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

Išvestis:

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

Daugiau pavyzdžių

Pateiktam tekstiniam failui:

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

1) Iš kiekvienos geeksforgeeks.txt eilutės spausdinti pirmąjį elementą kartu su eilutės numeriu (NR), atskirtu simboliu –:

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

2) Norėdami grąžinti antrąjį stulpelį / elementą iš geeksforgeeks.txt:

Klausimas turėtų būti toks: – Norėdami grąžinti antrąjį stulpelį / elementą iš geeksforgeeks.txt:

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

3) Atspausdinti bet kokią netuščią eilutę, jei yra

$ awk 'NF <0' geeksforgeeks.txt>

čia NF turi būti ne mažesnis kaip 0 ir vartotojas taip pat turi atspausdinti eilutės numerį:

teisingas atsakymas: awk ‘NF == 0 {spausdinti NR}’ geeksforgeeks.txt

ARBA

awk „NF <= 0 {spausdinti NR}“ geeksforgeeks.txt

0>

4) Norėdami rasti ilgiausios failo eilutės ilgį:

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

5) Norėdami suskaičiuoti failo eilutes:

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

6) Daugiau nei 10 simbolių turinčių eilučių spausdinimas:

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

8) Norėdami atspausdinti pirmųjų skaičių nuo 1 iki n kvadratus, pasakykite 6:

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


)>10' geeksforgeeks.txt>> $ awk '{ if( == 'B6') print

Awk yra scenarijų kalba, naudojama manipuliuoti duomenimis ir generuoti ataskaitas. awk komandų programavimo kalba nereikalauja kompiliavimo ir leidžia vartotojui naudoti kintamuosius, skaitines funkcijas, eilučių funkcijas ir loginius operatorius.

Awk yra programa, leidžianti programuotojui rašyti mažas, bet veiksmingas programas teiginių pavidalu, kurie apibrėžia teksto šablonus, kurių reikia ieškoti kiekvienoje dokumento eilutėje, ir veiksmus, kurių reikia imtis, kai randama atitiktis. linija. Awk dažniausiai naudojamas raštų nuskaitymui ir apdorojimui. Ji ieško vieno ar daugiau failų, kad sužinotų, ar juose yra eilučių, atitinkančių nurodytus šablonus, ir tada atlieka susijusius veiksmus.

Awk yra sutrumpintas iš kūrėjų pavadinimų - Aho, Weinberger ir Kernighan.

KĄ GALIME DARYTI SU AWK?

1. AWK operacijos:
(a) Nuskaito failą eilutė po eilutės
(b) Padalija kiekvieną įvesties eilutę į laukus
(c) lygina įvesties eilutę / laukus su šablonu
(d) Atlieka veiksmą (-us) suderintose eilutėse

2. Naudinga:
a) Transformuokite duomenų failus
b) rengia suformatuotas ataskaitas

3. Programavimo konstrukcijos:
a) Formatuokite išvesties linijas
b) Aritmetikos ir eilučių operacijos
c) Sąlygos ir kilpos

Sintaksė:

awk options 'selection _criteria {action }' input-file>išvesties failas>

Galimybės:

-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>

Komandų pavyzdžiai

Pavyzdys:

Apsvarstykite šį tekstinį failą kaip įvesties failą visais toliau nurodytais atvejais:

$cat>darbuotojas.txt>> $ awk '{print}' employee.txt>

Išvestis:

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>

Aukščiau pateiktame pavyzdyje modelis nepateiktas. Taigi veiksmai taikomi visoms eilutėms. Veiksmo spausdinimas be jokių argumentų pagal numatytuosius nustatymus spausdina visą eilutę, todėl be klaidų spausdina visas failo eilutes.

2. Atspausdinkite eilutes, kurios atitinka nurodytą raštą.

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

Išvestis:

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

Aukščiau pateiktame pavyzdyje komanda awk išspausdina visą eilutę, kuri atitinka „vadybininką“.

3. Linijos padalijimas į laukus : Pagal numatytuosius nustatymus kiekvienam įrašui, ty eilutei, komanda awk padalija įrašą, atskirtą tarpo simboliu, ir išsaugo jį $n kintamuosiuose. Jei eilutėje yra 4 žodžiai, ji bus saugoma atitinkamai $1, $2, $3 ir $4. Be to, 0 USD reiškia visą eilutę.

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

Išvestis:

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

Aukščiau pateiktame pavyzdyje 1 USD ir 4 USD žymi atitinkamai laukus Vardas ir Atlyginimas.

Integruoti kintamieji „Awk“.

Awk integruoti kintamieji apima lauko kintamuosius – $1, $2, $3 ir tt ($0 yra visa eilutė), kurie suskaido teksto eilutę į atskirus žodžius arba dalis, vadinamus laukais.

    NR: NR komanda saugo dabartinį įvesties įrašų skaičių. Atminkite, kad įrašai dažniausiai yra eilutės. Awk komanda atlieka šablono / veiksmo sakinius vieną kartą kiekvienam failo įrašui. NF: NF komanda skaičiuoja laukų skaičių dabartiniame įvesties įraše. FS: FS komandoje yra lauko skyriklio simbolis, kuris naudojamas laukams padalinti įvesties eilutėje. Numatytasis yra tarpas, reiškiantis tarpo ir tabuliavimo simbolius. FS gali būti perskirtas kitam simboliui (paprastai BEGIN), kad būtų pakeistas lauko skyriklis. RS: RS komanda išsaugo esamą įrašo skyriklio simbolį. Kadangi pagal numatytuosius nustatymus įvesties eilutė yra įvesties įrašas, numatytasis įrašo skyriklio simbolis yra nauja eilutė. OFS: OFS komanda saugo išvesties lauko skyriklį, kuris atskiria laukus, kai Awk juos spausdina. Numatytoji reikšmė yra tuščia vieta. Kai spausdinant yra keli parametrai, atskirti kableliais, tarp kiekvieno parametro bus spausdinama OFS reikšmė. ORS: komanda ORS saugo išvesties įrašo skyriklį, kuris atskiria išvesties eilutes, kai Awk jas spausdina. Numatytasis yra naujos eilutės simbolis. print automatiškai išveda ORS turinį to, kas jam duota spausdinti.

Pavyzdžiai:

NR įtaisytųjų kintamųjų naudojimas (pateikti eilutės numerį)

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

Išvestis:

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>

Aukščiau pateiktame pavyzdyje awk komanda su NR spausdina visas eilutes kartu su eilutės numeriu.

NF įtaisytųjų kintamųjų naudojimas (Rodyti paskutinį lauką)

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

Išvestis:

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

Aukščiau pateiktame pavyzdyje $1 reiškia vardą, o $NF – atlyginimą. Atlyginimą galime gauti naudodami $NF , kur $NF reiškia paskutinį lauką.

Kitas NR įtaisytųjų kintamųjų naudojimas (vaizdo eilutė nuo 3 iki 6)

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

Išvestis:

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

Daugiau pavyzdžių

Pateiktam tekstiniam failui:

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

1) Iš kiekvienos geeksforgeeks.txt eilutės spausdinti pirmąjį elementą kartu su eilutės numeriu (NR), atskirtu simboliu –:

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

2) Norėdami grąžinti antrąjį stulpelį / elementą iš geeksforgeeks.txt:

Klausimas turėtų būti toks: – Norėdami grąžinti antrąjį stulpelį / elementą iš geeksforgeeks.txt:

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

3) Atspausdinti bet kokią netuščią eilutę, jei yra

$ awk 'NF <0' geeksforgeeks.txt>

čia NF turi būti ne mažesnis kaip 0 ir vartotojas taip pat turi atspausdinti eilutės numerį:

teisingas atsakymas: awk ‘NF == 0 {spausdinti NR}’ geeksforgeeks.txt

ARBA

awk „NF <= 0 {spausdinti NR}“ geeksforgeeks.txt

0>

4) Norėdami rasti ilgiausios failo eilutės ilgį:

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

5) Norėdami suskaičiuoti failo eilutes:

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

6) Daugiau nei 10 simbolių turinčių eilučių spausdinimas:

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

8) Norėdami atspausdinti pirmųjų skaičių nuo 1 iki n kvadratus, pasakykite 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) Norėdami atspausdinti pirmųjų skaičių nuo 1 iki n kvadratus, pasakykite 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>