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: 2. Naudinga: 3. Programavimo konstrukcijos: Sintaksė: Galimybės: Komandų pavyzdžiai Pavyzdys: Apsvarstykite šį tekstinį failą kaip įvesties failą visais toliau nurodytais atvejais: Išvestis: 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ą. Išvestis: 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ę. Išvestis: 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. Pavyzdžiai: NR įtaisytųjų kintamųjų naudojimas (pateikti eilutės numerį) Išvestis: 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ą) Išvestis: 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) Išvestis: Daugiau pavyzdžių Pateiktam tekstiniam failui: 1) Iš kiekvienos geeksforgeeks.txt eilutės spausdinti pirmąjį elementą kartu su eilutės numeriu (NR), atskirtu simboliu –: 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: 3) Atspausdinti bet kokią netuščią eilutę, jei yra č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 4) Norėdami rasti ilgiausios failo eilutės ilgį: 5) Norėdami suskaičiuoti failo eilutes: 6) Daugiau nei 10 simbolių turinčių eilučių spausdinimas: 8) Norėdami atspausdinti pirmųjų skaičių nuo 1 iki n kvadratus, pasakykite 6:
(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
a) Transformuokite duomenų failus
b) rengia suformatuotas ataskaitas
a) Formatuokite išvesties linijas
b) Aritmetikos ir eilučių operacijos
c) Sąlygos ir kilposawk options 'selection _criteria {action }' input-file>išvesties failas> -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>darbuotojas.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: 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.
$ 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 Vyras 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 = ilgis($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: 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()>10' geeksforgeeks.txt>> 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ėse2. Naudinga:
a) Transformuokite duomenų failus
b) rengia suformatuotas ataskaitas3. Programavimo konstrukcijos:
a) Formatuokite išvesties linijas
b) Aritmetikos ir eilučių operacijos
c) Sąlygos ir kilposSintaksė:
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>$ 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ėse2. Naudinga:
a) Transformuokite duomenų failus
b) rengia suformatuotas ataskaitas3. Programavimo konstrukcijos:
a) Formatuokite išvesties linijas
b) Aritmetikos ir eilučių operacijos
c) Sąlygos ir kilposSintaksė:
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>