Awk on komentosarjakieli, jota käytetään tietojen käsittelyyn ja raporttien luomiseen. awk-komentoohjelmointikieli ei vaadi kääntämistä ja antaa käyttäjälle mahdollisuuden käyttää muuttujia, numeerisia toimintoja, merkkijonofunktioita ja loogisia operaattoreita.
Awk on apuohjelma, jonka avulla ohjelmoija voi kirjoittaa pieniä, mutta tehokkaita ohjelmia lauseiden muodossa, jotka määrittelevät tekstimalleja, jotka on etsittävä asiakirjan jokaiselta riviltä ja toiminnot, jotka on suoritettava, kun vastaavuus löytyy linja. Awkia käytetään enimmäkseen kuvioiden skannaukseen ja käsittelyyn. Se etsii yhdestä tai useammasta tiedostosta nähdäkseen, sisältävätkö ne rivejä, jotka vastaavat määritettyjä malleja, ja suorittaa sitten niihin liittyvät toiminnot.
Awk on lyhennetty kehittäjien – Aho, Weinberger ja Kernighan – nimistä.
MITÄ VOIMME TEHDÄ AWK:N KANSSA?
1. AWK-toiminnot:
(a) Skannaa tiedoston rivi riviltä
(b) Jakaa jokaisen syöttörivin kenttiin
(c) Vertaa syöttöriviä/kenttiä kuvioon
(d) Suorittaa toimenpiteitä sovitetuilla riveillä
2. Hyödyllinen:
(a) Muunna datatiedostoja
(b) tuottaa muotoiltuja raportteja
3. Ohjelmointirakenteet:
(a) Muotoile lähtölinjat
(b) Aritmeettiset ja merkkijonooperaatiot
(c) Ehdot ja silmukat
Syntaksi:
algoritmin syvyys ensimmäinen haku
awk options 'selection _criteria {action }' input-file>output-file> Vaihtoehdot:
-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>
Esimerkkikomennot
lajittele taulukkoluettelo
Esimerkki:
Harkitse seuraavaa tekstitiedostoa syöttötiedostona kaikissa alla olevissa tapauksissa:
$cat>työntekijä.txt>>$ awk '{print}' employee.txt>
Lähtö:
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>
Yllä olevassa esimerkissä kuviota ei anneta. Toiminnot ovat siis sovellettavissa kaikille linjoille. Toimintotulostus ilman argumenttia tulostaa oletuksena koko rivin, joten se tulostaa tiedoston kaikki rivit ilman virhettä.
2. Tulosta viivat, jotka vastaavat annettua kuviota.
$ awk '/manager/ {print}' employee.txt> Lähtö:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Yllä olevassa esimerkissä awk-komento tulostaa kaikki rivit, jotka vastaavat 'manager' -komentoa.
3. Viivan jakaminen kenttiin: Jokaiselle tietueelle eli riville awk-komento jakaa oletusarvoisesti välilyönnillä rajatun tietueen ja tallentaa sen $n muuttujiin. Jos rivillä on 4 sanaa, se tallennetaan vastaavasti , , ja . Lisäksi Awk on komentosarjakieli, jota käytetään tietojen käsittelyyn ja raporttien luomiseen. awk-komentoohjelmointikieli ei vaadi kääntämistä ja antaa käyttäjälle mahdollisuuden käyttää muuttujia, numeerisia toimintoja, merkkijonofunktioita ja loogisia operaattoreita. Awk on apuohjelma, jonka avulla ohjelmoija voi kirjoittaa pieniä, mutta tehokkaita ohjelmia lauseiden muodossa, jotka määrittelevät tekstimalleja, jotka on etsittävä asiakirjan jokaiselta riviltä ja toiminnot, jotka on suoritettava, kun vastaavuus löytyy linja. Awkia käytetään enimmäkseen kuvioiden skannaukseen ja käsittelyyn. Se etsii yhdestä tai useammasta tiedostosta nähdäkseen, sisältävätkö ne rivejä, jotka vastaavat määritettyjä malleja, ja suorittaa sitten niihin liittyvät toiminnot. Awk on lyhennetty kehittäjien – Aho, Weinberger ja Kernighan – nimistä. MITÄ VOIMME TEHDÄ AWK:N KANSSA? 1. AWK-toiminnot: 2. Hyödyllinen: 3. Ohjelmointirakenteet: Syntaksi: Vaihtoehdot: Esimerkkikomennot Esimerkki: Harkitse seuraavaa tekstitiedostoa syöttötiedostona kaikissa alla olevissa tapauksissa: Lähtö: Yllä olevassa esimerkissä kuviota ei anneta. Toiminnot ovat siis sovellettavissa kaikille linjoille. Toimintotulostus ilman argumenttia tulostaa oletuksena koko rivin, joten se tulostaa tiedoston kaikki rivit ilman virhettä. 2. Tulosta viivat, jotka vastaavat annettua kuviota. Lähtö: Yllä olevassa esimerkissä awk-komento tulostaa kaikki rivit, jotka vastaavat 'manager' -komentoa. 3. Viivan jakaminen kenttiin: Jokaiselle tietueelle eli riville awk-komento jakaa oletusarvoisesti välilyönnillä rajatun tietueen ja tallentaa sen $n muuttujiin. Jos rivillä on 4 sanaa, se tallennetaan vastaavasti $1, $2, $3 ja $4. Lisäksi $0 edustaa koko riviä. Lähtö: Yllä olevassa esimerkissä $1 ja $4 edustavat Nimi- ja Palkkakenttiä. Sisäänrakennetut muuttujat awkissa Awkin sisäänrakennetut muuttujat sisältävät kenttämuuttujia - $1, $2, $3 ja niin edelleen ($0 on koko rivi) - jotka jakavat tekstirivin yksittäisiksi sanoiksi tai kentiksi kutsuttuihin osiin. Esimerkkejä: Sisäänrakennettujen NR-muuttujien käyttö (näyttörivin numero) Lähtö: Yllä olevassa esimerkissä awk-komento, jossa on NR, tulostaa kaikki rivit rivinumeron kanssa. Sisäisten NF-muuttujien käyttö (Näytä viimeinen kenttä) Lähtö: Yllä olevassa esimerkissä $1 edustaa nimeä ja $NF edustaa palkkaa. Voimme saada Palkan käyttämällä $NF , jossa $NF edustaa viimeistä kenttää. Toinen sisäänrakennettujen NR-muuttujien käyttö (Display Line From 3-6) Lähtö: Lisää esimerkkejä Annetulle tekstitiedostolle: 1) Ensimmäisen kohteen tulostaminen geeksforgeeks.txt-tiedoston jokaiselta riviltä rivinumeron (NR) kanssa erotettuna -merkillä: 2) Toisen sarakkeen/kohteen palauttaminen tiedostosta geeksforgeeks.txt: Kysymyksen pitäisi olla: - Toisen sarakkeen/kohteen palauttaminen tiedostosta geeksforgeeks.txt: 3) Tulosta mikä tahansa ei-tyhjä rivi, jos sellainen on tässä NF:n tulee olla 0 vähintään ja käyttäjän on tulostettava myös rivinumero: oikea vastaus: awk 'NF == 0 {print NR}' geeksforgeeks.txt TAI awk 'NF <= 0 {tulosta NR}' geeksforgeeks.txt 4) Löydät tiedostossa olevan pisimmän rivin pituuden seuraavasti: 5) Tiedoston rivien laskeminen: 6) Tulostusrivit, joissa on yli 10 merkkiä: 8) Tulosta ensimmäisten numeroiden neliöt 1:stä n:ään sanomalla 6:
(a) Skannaa tiedoston rivi riviltä
(b) Jakaa jokaisen syöttörivin kenttiin
(c) Vertaa syöttöriviä/kenttiä kuvioon
(d) Suorittaa toimenpiteitä sovitetuilla riveillä
(a) Muunna datatiedostoja
(b) tuottaa muotoiltuja raportteja
(a) Muotoile lähtölinjat
(b) Aritmeettiset ja merkkijonooperaatiot
(c) Ehdot ja silmukatawk options 'selection _criteria {action }' input-file>output-file> -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>työntekijä.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-komento pitää syöttötietueiden lukumäärän nykyisen määrän. Muista, että tietueet ovat yleensä rivejä. Awk-komento suorittaa malli-/toimintolausekkeet kerran jokaiselle tiedoston tietueelle. NF: NF-komento pitää kenttien määrän nykyisessä syöttötietueessa. FS: FS-komento sisältää kentän erotinmerkin, jota käytetään jakamaan kentät syöttörivillä. Oletuksena on välilyönti, joka tarkoittaa välilyönti- ja sarkainmerkkejä. FS voidaan määrittää uudelleen toiselle merkille (yleensä kohdassa BEGIN) kentän erottimen muuttamiseksi. RS: RS-komento tallentaa nykyisen tietueen erotinmerkin. Koska oletusarvoisesti syöttörivi on syöttötietue, oletustietueen erotinmerkki on rivinvaihto. OFS: OFS-komento tallentaa tuloskenttäerottimen, joka erottaa kentät, kun Awk tulostaa ne. Oletusarvo on tyhjä tila. Aina kun tulostuksessa on useita pilkuilla erotettuja parametreja, se tulostaa OFS:n arvon kunkin parametrin väliin. ORS: ORS-komento tallentaa tulostietueen erottimen, joka erottaa tulostusrivit, kun Awk tulostaa ne. Oletusarvo on rivinvaihtomerkki. print tulostaa automaattisesti ORS:n sisällön tulostettavaksi annettujen tietojen lopussa.
$ 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 Mies 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 = pituus($0) } END { print max }' geeksforgeeks.txt> 13>
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
$ awk 'length($0)>10' geeksforgeeks.txt>>
$ awk 'BEGIN { for(i=1;i<=6;i++) print 'square of', i, 'is',i*i; }'> square of 1 is 1 square of 2 is 4 square of 3 is 9 square of 4 is 16 square of 5 is 25 square of 6 is 36>
$ awk '{print ,}' employee.txt> Lähtö:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Yllä olevassa esimerkissä ja edustavat Nimi- ja Palkkakenttiä.
Sisäänrakennetut muuttujat awkissa
Awkin sisäänrakennetut muuttujat sisältävät kenttämuuttujia - , , ja niin edelleen ( Awk on komentosarjakieli, jota käytetään tietojen käsittelyyn ja raporttien luomiseen. awk-komentoohjelmointikieli ei vaadi kääntämistä ja antaa käyttäjälle mahdollisuuden käyttää muuttujia, numeerisia toimintoja, merkkijonofunktioita ja loogisia operaattoreita. Awk on apuohjelma, jonka avulla ohjelmoija voi kirjoittaa pieniä, mutta tehokkaita ohjelmia lauseiden muodossa, jotka määrittelevät tekstimalleja, jotka on etsittävä asiakirjan jokaiselta riviltä ja toiminnot, jotka on suoritettava, kun vastaavuus löytyy linja. Awkia käytetään enimmäkseen kuvioiden skannaukseen ja käsittelyyn. Se etsii yhdestä tai useammasta tiedostosta nähdäkseen, sisältävätkö ne rivejä, jotka vastaavat määritettyjä malleja, ja suorittaa sitten niihin liittyvät toiminnot. Awk on lyhennetty kehittäjien – Aho, Weinberger ja Kernighan – nimistä. MITÄ VOIMME TEHDÄ AWK:N KANSSA? 1. AWK-toiminnot: 2. Hyödyllinen: 3. Ohjelmointirakenteet: Syntaksi: Vaihtoehdot: Esimerkkikomennot Esimerkki: Harkitse seuraavaa tekstitiedostoa syöttötiedostona kaikissa alla olevissa tapauksissa: Lähtö: Yllä olevassa esimerkissä kuviota ei anneta. Toiminnot ovat siis sovellettavissa kaikille linjoille. Toimintotulostus ilman argumenttia tulostaa oletuksena koko rivin, joten se tulostaa tiedoston kaikki rivit ilman virhettä. 2. Tulosta viivat, jotka vastaavat annettua kuviota. Lähtö: Yllä olevassa esimerkissä awk-komento tulostaa kaikki rivit, jotka vastaavat 'manager' -komentoa. 3. Viivan jakaminen kenttiin: Jokaiselle tietueelle eli riville awk-komento jakaa oletusarvoisesti välilyönnillä rajatun tietueen ja tallentaa sen $n muuttujiin. Jos rivillä on 4 sanaa, se tallennetaan vastaavasti $1, $2, $3 ja $4. Lisäksi $0 edustaa koko riviä. Lähtö: Yllä olevassa esimerkissä $1 ja $4 edustavat Nimi- ja Palkkakenttiä. Sisäänrakennetut muuttujat awkissa Awkin sisäänrakennetut muuttujat sisältävät kenttämuuttujia - $1, $2, $3 ja niin edelleen ($0 on koko rivi) - jotka jakavat tekstirivin yksittäisiksi sanoiksi tai kentiksi kutsuttuihin osiin. Esimerkkejä: Sisäänrakennettujen NR-muuttujien käyttö (näyttörivin numero) Lähtö: Yllä olevassa esimerkissä awk-komento, jossa on NR, tulostaa kaikki rivit rivinumeron kanssa. Sisäisten NF-muuttujien käyttö (Näytä viimeinen kenttä) Lähtö: Yllä olevassa esimerkissä $1 edustaa nimeä ja $NF edustaa palkkaa. Voimme saada Palkan käyttämällä $NF , jossa $NF edustaa viimeistä kenttää. Toinen sisäänrakennettujen NR-muuttujien käyttö (Display Line From 3-6) Lähtö: Lisää esimerkkejä Annetulle tekstitiedostolle: 1) Ensimmäisen kohteen tulostaminen geeksforgeeks.txt-tiedoston jokaiselta riviltä rivinumeron (NR) kanssa erotettuna -merkillä: 2) Toisen sarakkeen/kohteen palauttaminen tiedostosta geeksforgeeks.txt: Kysymyksen pitäisi olla: - Toisen sarakkeen/kohteen palauttaminen tiedostosta geeksforgeeks.txt: 3) Tulosta mikä tahansa ei-tyhjä rivi, jos sellainen on tässä NF:n tulee olla 0 vähintään ja käyttäjän on tulostettava myös rivinumero: oikea vastaus: awk 'NF == 0 {print NR}' geeksforgeeks.txt TAI awk 'NF <= 0 {tulosta NR}' geeksforgeeks.txt 4) Löydät tiedostossa olevan pisimmän rivin pituuden seuraavasti: 5) Tiedoston rivien laskeminen: 6) Tulostusrivit, joissa on yli 10 merkkiä: 8) Tulosta ensimmäisten numeroiden neliöt 1:stä n:ään sanomalla 6:
(a) Skannaa tiedoston rivi riviltä
(b) Jakaa jokaisen syöttörivin kenttiin
(c) Vertaa syöttöriviä/kenttiä kuvioon
(d) Suorittaa toimenpiteitä sovitetuilla riveillä
(a) Muunna datatiedostoja
(b) tuottaa muotoiltuja raportteja
(a) Muotoile lähtölinjat
(b) Aritmeettiset ja merkkijonooperaatiot
(c) Ehdot ja silmukatawk options 'selection _criteria {action }' input-file>output-file> -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>työntekijä.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-komento pitää syöttötietueiden lukumäärän nykyisen määrän. Muista, että tietueet ovat yleensä rivejä. Awk-komento suorittaa malli-/toimintolausekkeet kerran jokaiselle tiedoston tietueelle. NF: NF-komento pitää kenttien määrän nykyisessä syöttötietueessa. FS: FS-komento sisältää kentän erotinmerkin, jota käytetään jakamaan kentät syöttörivillä. Oletuksena on välilyönti, joka tarkoittaa välilyönti- ja sarkainmerkkejä. FS voidaan määrittää uudelleen toiselle merkille (yleensä kohdassa BEGIN) kentän erottimen muuttamiseksi. RS: RS-komento tallentaa nykyisen tietueen erotinmerkin. Koska oletusarvoisesti syöttörivi on syöttötietue, oletustietueen erotinmerkki on rivinvaihto. OFS: OFS-komento tallentaa tuloskenttäerottimen, joka erottaa kentät, kun Awk tulostaa ne. Oletusarvo on tyhjä tila. Aina kun tulostuksessa on useita pilkuilla erotettuja parametreja, se tulostaa OFS:n arvon kunkin parametrin väliin. ORS: ORS-komento tallentaa tulostietueen erottimen, joka erottaa tulostusrivit, kun Awk tulostaa ne. Oletusarvo on rivinvaihtomerkki. print tulostaa automaattisesti ORS:n sisällön tulostettavaksi annettujen tietojen lopussa.
$ 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 Mies 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 = pituus($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>
ymail
- NR: NR-komento pitää syöttötietueiden lukumäärän nykyisen määrän. Muista, että tietueet ovat yleensä rivejä. Awk-komento suorittaa malli-/toimintolausekkeet kerran jokaiselle tiedoston tietueelle. NF: NF-komento pitää kenttien määrän nykyisessä syöttötietueessa. FS: FS-komento sisältää kentän erotinmerkin, jota käytetään jakamaan kentät syöttörivillä. Oletuksena on välilyönti, joka tarkoittaa välilyönti- ja sarkainmerkkejä. FS voidaan määrittää uudelleen toiselle merkille (yleensä kohdassa BEGIN) kentän erottimen muuttamiseksi. RS: RS-komento tallentaa nykyisen tietueen erotinmerkin. Koska oletusarvoisesti syöttörivi on syöttötietue, oletustietueen erotinmerkki on rivinvaihto. OFS: OFS-komento tallentaa tuloskenttäerottimen, joka erottaa kentät, kun Awk tulostaa ne. Oletusarvo on tyhjä tila. Aina kun tulostuksessa on useita pilkuilla erotettuja parametreja, se tulostaa OFS:n arvon kunkin parametrin väliin. ORS: ORS-komento tallentaa tulostietueen erottimen, joka erottaa tulostusrivit, kun Awk tulostaa ne. Oletusarvo on rivinvaihtomerkki. print tulostaa automaattisesti ORS:n sisällön tulostettavaksi annettujen tietojen lopussa.
Esimerkkejä:
Sisäänrakennettujen NR-muuttujien käyttö (näyttörivin numero)
$ awk '{print NR,Awk on komentosarjakieli, jota käytetään tietojen käsittelyyn ja raporttien luomiseen. awk-komentoohjelmointikieli ei vaadi kääntämistä ja antaa käyttäjälle mahdollisuuden käyttää muuttujia, numeerisia toimintoja, merkkijonofunktioita ja loogisia operaattoreita.
Awk on apuohjelma, jonka avulla ohjelmoija voi kirjoittaa pieniä, mutta tehokkaita ohjelmia lauseiden muodossa, jotka määrittelevät tekstimalleja, jotka on etsittävä asiakirjan jokaiselta riviltä ja toiminnot, jotka on suoritettava, kun vastaavuus löytyy linja. Awkia käytetään enimmäkseen kuvioiden skannaukseen ja käsittelyyn. Se etsii yhdestä tai useammasta tiedostosta nähdäkseen, sisältävätkö ne rivejä, jotka vastaavat määritettyjä malleja, ja suorittaa sitten niihin liittyvät toiminnot.
Awk on lyhennetty kehittäjien – Aho, Weinberger ja Kernighan – nimistä.
MITÄ VOIMME TEHDÄ AWK:N KANSSA?
1. AWK-toiminnot:
(a) Skannaa tiedoston rivi riviltä
(b) Jakaa jokaisen syöttörivin kenttiin
(c) Vertaa syöttöriviä/kenttiä kuvioon
(d) Suorittaa toimenpiteitä sovitetuilla riveillä
2. Hyödyllinen:
(a) Muunna datatiedostoja
(b) tuottaa muotoiltuja raportteja
3. Ohjelmointirakenteet:
(a) Muotoile lähtölinjat
(b) Aritmeettiset ja merkkijonooperaatiot
(c) Ehdot ja silmukat
Syntaksi:
awk options 'selection _criteria {action }' input-file>output-file> Vaihtoehdot:
-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>
Esimerkkikomennot
Esimerkki:
Harkitse seuraavaa tekstitiedostoa syöttötiedostona kaikissa alla olevissa tapauksissa:
$cat>työntekijä.txt>> $ awk '{print}' employee.txt>
Lähtö:
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>
Yllä olevassa esimerkissä kuviota ei anneta. Toiminnot ovat siis sovellettavissa kaikille linjoille. Toimintotulostus ilman argumenttia tulostaa oletuksena koko rivin, joten se tulostaa tiedoston kaikki rivit ilman virhettä.
2. Tulosta viivat, jotka vastaavat annettua kuviota.
$ awk '/manager/ {print}' employee.txt> Lähtö:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Yllä olevassa esimerkissä awk-komento tulostaa kaikki rivit, jotka vastaavat 'manager' -komentoa.
3. Viivan jakaminen kenttiin: Jokaiselle tietueelle eli riville awk-komento jakaa oletusarvoisesti välilyönnillä rajatun tietueen ja tallentaa sen $n muuttujiin. Jos rivillä on 4 sanaa, se tallennetaan vastaavasti $1, $2, $3 ja $4. Lisäksi $0 edustaa koko riviä.
$ awk '{print $1,$4}' employee.txt> Lähtö:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Yllä olevassa esimerkissä $1 ja $4 edustavat Nimi- ja Palkkakenttiä.
Sisäänrakennetut muuttujat awkissa
Awkin sisäänrakennetut muuttujat sisältävät kenttämuuttujia - $1, $2, $3 ja niin edelleen ($0 on koko rivi) - jotka jakavat tekstirivin yksittäisiksi sanoiksi tai kentiksi kutsuttuihin osiin.
NR: NR-komento pitää syöttötietueiden lukumäärän nykyisen määrän. Muista, että tietueet ovat yleensä rivejä. Awk-komento suorittaa malli-/toimintolausekkeet kerran jokaiselle tiedoston tietueelle. NF: NF-komento pitää kenttien määrän nykyisessä syöttötietueessa. FS: FS-komento sisältää kentän erotinmerkin, jota käytetään jakamaan kentät syöttörivillä. Oletuksena on välilyönti, joka tarkoittaa välilyönti- ja sarkainmerkkejä. FS voidaan määrittää uudelleen toiselle merkille (yleensä kohdassa BEGIN) kentän erottimen muuttamiseksi. RS: RS-komento tallentaa nykyisen tietueen erotinmerkin. Koska oletusarvoisesti syöttörivi on syöttötietue, oletustietueen erotinmerkki on rivinvaihto. OFS: OFS-komento tallentaa tuloskenttäerottimen, joka erottaa kentät, kun Awk tulostaa ne. Oletusarvo on tyhjä tila. Aina kun tulostuksessa on useita pilkuilla erotettuja parametreja, se tulostaa OFS:n arvon kunkin parametrin väliin. ORS: ORS-komento tallentaa tulostietueen erottimen, joka erottaa tulostusrivit, kun Awk tulostaa ne. Oletusarvo on rivinvaihtomerkki. print tulostaa automaattisesti ORS:n sisällön tulostettavaksi annettujen tietojen lopussa.
Esimerkkejä:
Sisäänrakennettujen NR-muuttujien käyttö (näyttörivin numero)
$ awk '{print NR,$0}' employee.txt> Lähtö:
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>
Yllä olevassa esimerkissä awk-komento, jossa on NR, tulostaa kaikki rivit rivinumeron kanssa.
Sisäisten NF-muuttujien käyttö (Näytä viimeinen kenttä)
$ awk '{print $1,$NF}' employee.txt> Lähtö:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Yllä olevassa esimerkissä $1 edustaa nimeä ja $NF edustaa palkkaa. Voimme saada Palkan käyttämällä $NF , jossa $NF edustaa viimeistä kenttää.
Toinen sisäänrakennettujen NR-muuttujien käyttö (Display Line From 3-6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Lähtö:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Lisää esimerkkejä
Annetulle tekstitiedostolle:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Mies B6 2 Praveen M42 3>
1) Ensimmäisen kohteen tulostaminen geeksforgeeks.txt-tiedoston jokaiselta riviltä rivinumeron (NR) kanssa erotettuna -merkillä:
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Toisen sarakkeen/kohteen palauttaminen tiedostosta geeksforgeeks.txt:
Kysymyksen pitäisi olla: - Toisen sarakkeen/kohteen palauttaminen tiedostosta geeksforgeeks.txt:
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Tulosta mikä tahansa ei-tyhjä rivi, jos sellainen on
$ awk 'NF <0' geeksforgeeks.txt>
tässä NF:n tulee olla 0 vähintään ja käyttäjän on tulostettava myös rivinumero:
oikea vastaus: awk 'NF == 0 {print NR}' geeksforgeeks.txt
TAI
awk 'NF <= 0 {tulosta NR}' geeksforgeeks.txt
0>
4) Löydät tiedostossa olevan pisimmän rivin pituuden seuraavasti:
$ awk '{ if (length($0)>max) max = pituus($0) } END { print max }' geeksforgeeks.txt> 13>
5) Tiedoston rivien laskeminen:
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Tulostusrivit, joissa on yli 10 merkkiä:
$ awk 'length($0)>10' geeksforgeeks.txt>> $ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt>
8) Tulosta ensimmäisten numeroiden neliöt 1:stä n:ään sanomalla 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> Lähtö:
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>
Yllä olevassa esimerkissä awk-komento, jossa on NR, tulostaa kaikki rivit rivinumeron kanssa.
Sisäisten NF-muuttujien käyttö (Näytä viimeinen kenttä)
$ awk '{print ,$NF}' employee.txt> Lähtö:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Yllä olevassa esimerkissä edustaa nimeä ja $NF edustaa palkkaa. Voimme saada Palkan käyttämällä $NF , jossa $NF edustaa viimeistä kenttää.
Toinen sisäänrakennettujen NR-muuttujien käyttö (Display Line From 3-6)
$ awk 'NR==3, NR==6 {print NR,Awk on komentosarjakieli, jota käytetään tietojen käsittelyyn ja raporttien luomiseen. awk-komentoohjelmointikieli ei vaadi kääntämistä ja antaa käyttäjälle mahdollisuuden käyttää muuttujia, numeerisia toimintoja, merkkijonofunktioita ja loogisia operaattoreita.
Awk on apuohjelma, jonka avulla ohjelmoija voi kirjoittaa pieniä, mutta tehokkaita ohjelmia lauseiden muodossa, jotka määrittelevät tekstimalleja, jotka on etsittävä asiakirjan jokaiselta riviltä ja toiminnot, jotka on suoritettava, kun vastaavuus löytyy linja. Awkia käytetään enimmäkseen kuvioiden skannaukseen ja käsittelyyn. Se etsii yhdestä tai useammasta tiedostosta nähdäkseen, sisältävätkö ne rivejä, jotka vastaavat määritettyjä malleja, ja suorittaa sitten niihin liittyvät toiminnot.
Awk on lyhennetty kehittäjien – Aho, Weinberger ja Kernighan – nimistä.
MITÄ VOIMME TEHDÄ AWK:N KANSSA?
1. AWK-toiminnot:
(a) Skannaa tiedoston rivi riviltä
(b) Jakaa jokaisen syöttörivin kenttiin
(c) Vertaa syöttöriviä/kenttiä kuvioon
(d) Suorittaa toimenpiteitä sovitetuilla riveillä
2. Hyödyllinen:
(a) Muunna datatiedostoja
(b) tuottaa muotoiltuja raportteja
3. Ohjelmointirakenteet:
(a) Muotoile lähtölinjat
(b) Aritmeettiset ja merkkijonooperaatiot
(c) Ehdot ja silmukat
Syntaksi:
awk options 'selection _criteria {action }' input-file>output-file> Vaihtoehdot:
-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>
Esimerkkikomennot
Esimerkki:
Harkitse seuraavaa tekstitiedostoa syöttötiedostona kaikissa alla olevissa tapauksissa:
$cat>työntekijä.txt>> $ awk '{print}' employee.txt>
Lähtö:
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>
Yllä olevassa esimerkissä kuviota ei anneta. Toiminnot ovat siis sovellettavissa kaikille linjoille. Toimintotulostus ilman argumenttia tulostaa oletuksena koko rivin, joten se tulostaa tiedoston kaikki rivit ilman virhettä.
2. Tulosta viivat, jotka vastaavat annettua kuviota.
$ awk '/manager/ {print}' employee.txt> Lähtö:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Yllä olevassa esimerkissä awk-komento tulostaa kaikki rivit, jotka vastaavat 'manager' -komentoa.
3. Viivan jakaminen kenttiin: Jokaiselle tietueelle eli riville awk-komento jakaa oletusarvoisesti välilyönnillä rajatun tietueen ja tallentaa sen $n muuttujiin. Jos rivillä on 4 sanaa, se tallennetaan vastaavasti $1, $2, $3 ja $4. Lisäksi $0 edustaa koko riviä.
$ awk '{print $1,$4}' employee.txt> Lähtö:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Yllä olevassa esimerkissä $1 ja $4 edustavat Nimi- ja Palkkakenttiä.
Sisäänrakennetut muuttujat awkissa
Awkin sisäänrakennetut muuttujat sisältävät kenttämuuttujia - $1, $2, $3 ja niin edelleen ($0 on koko rivi) - jotka jakavat tekstirivin yksittäisiksi sanoiksi tai kentiksi kutsuttuihin osiin.
NR: NR-komento pitää syöttötietueiden lukumäärän nykyisen määrän. Muista, että tietueet ovat yleensä rivejä. Awk-komento suorittaa malli-/toimintolausekkeet kerran jokaiselle tiedoston tietueelle. NF: NF-komento pitää kenttien määrän nykyisessä syöttötietueessa. FS: FS-komento sisältää kentän erotinmerkin, jota käytetään jakamaan kentät syöttörivillä. Oletuksena on välilyönti, joka tarkoittaa välilyönti- ja sarkainmerkkejä. FS voidaan määrittää uudelleen toiselle merkille (yleensä kohdassa BEGIN) kentän erottimen muuttamiseksi. RS: RS-komento tallentaa nykyisen tietueen erotinmerkin. Koska oletusarvoisesti syöttörivi on syöttötietue, oletustietueen erotinmerkki on rivinvaihto. OFS: OFS-komento tallentaa tuloskenttäerottimen, joka erottaa kentät, kun Awk tulostaa ne. Oletusarvo on tyhjä tila. Aina kun tulostuksessa on useita pilkuilla erotettuja parametreja, se tulostaa OFS:n arvon kunkin parametrin väliin. ORS: ORS-komento tallentaa tulostietueen erottimen, joka erottaa tulostusrivit, kun Awk tulostaa ne. Oletusarvo on rivinvaihtomerkki. print tulostaa automaattisesti ORS:n sisällön tulostettavaksi annettujen tietojen lopussa.
Esimerkkejä:
Sisäänrakennettujen NR-muuttujien käyttö (näyttörivin numero)
$ awk '{print NR,$0}' employee.txt> Lähtö:
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>
Yllä olevassa esimerkissä awk-komento, jossa on NR, tulostaa kaikki rivit rivinumeron kanssa.
Sisäisten NF-muuttujien käyttö (Näytä viimeinen kenttä)
$ awk '{print $1,$NF}' employee.txt> Lähtö:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Yllä olevassa esimerkissä $1 edustaa nimeä ja $NF edustaa palkkaa. Voimme saada Palkan käyttämällä $NF , jossa $NF edustaa viimeistä kenttää.
Toinen sisäänrakennettujen NR-muuttujien käyttö (Display Line From 3-6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Lähtö:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Lisää esimerkkejä
Annetulle tekstitiedostolle:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Mies B6 2 Praveen M42 3>
1) Ensimmäisen kohteen tulostaminen geeksforgeeks.txt-tiedoston jokaiselta riviltä rivinumeron (NR) kanssa erotettuna -merkillä:
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Toisen sarakkeen/kohteen palauttaminen tiedostosta geeksforgeeks.txt:
Kysymyksen pitäisi olla: - Toisen sarakkeen/kohteen palauttaminen tiedostosta geeksforgeeks.txt:
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Tulosta mikä tahansa ei-tyhjä rivi, jos sellainen on
$ awk 'NF <0' geeksforgeeks.txt>
tässä NF:n tulee olla 0 vähintään ja käyttäjän on tulostettava myös rivinumero:
oikea vastaus: awk 'NF == 0 {print NR}' geeksforgeeks.txt
TAI
awk 'NF <= 0 {tulosta NR}' geeksforgeeks.txt
0>
4) Löydät tiedostossa olevan pisimmän rivin pituuden seuraavasti:
$ awk '{ if (length($0)>max) max = pituus($0) } END { print max }' geeksforgeeks.txt> 13>
5) Tiedoston rivien laskeminen:
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Tulostusrivit, joissa on yli 10 merkkiä:
$ awk 'length($0)>10' geeksforgeeks.txt>> $ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt>
8) Tulosta ensimmäisten numeroiden neliöt 1:stä n:ään sanomalla 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> Lähtö:
merkkijonon pituus java
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Lisää esimerkkejä
Annetulle tekstitiedostolle:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Mies B6 2 Praveen M42 3>
1) Ensimmäisen kohteen tulostaminen geeksforgeeks.txt-tiedoston jokaiselta riviltä rivinumeron (NR) kanssa erotettuna -merkillä:
$ awk '{print NR '- ' }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Toisen sarakkeen/kohteen palauttaminen tiedostosta geeksforgeeks.txt:
Kysymyksen pitäisi olla: - Toisen sarakkeen/kohteen palauttaminen tiedostosta geeksforgeeks.txt:
$ awk '{print }' geeksforgeeks.txt> B A12 B6 M42>
3) Tulosta mikä tahansa ei-tyhjä rivi, jos sellainen on
$ awk 'NF <0' geeksforgeeks.txt>
tässä NF:n tulee olla 0 vähintään ja käyttäjän on tulostettava myös rivinumero:
"mikä on 10/100"
oikea vastaus: awk 'NF == 0 {print NR}' geeksforgeeks.txt
TAI
awk 'NF <= 0 {tulosta NR}' geeksforgeeks.txt
0>
4) Löydät tiedostossa olevan pisimmän rivin pituuden seuraavasti:
$ awk '{ if (length(Awk on komentosarjakieli, jota käytetään tietojen käsittelyyn ja raporttien luomiseen. awk-komentoohjelmointikieli ei vaadi kääntämistä ja antaa käyttäjälle mahdollisuuden käyttää muuttujia, numeerisia toimintoja, merkkijonofunktioita ja loogisia operaattoreita.
Awk on apuohjelma, jonka avulla ohjelmoija voi kirjoittaa pieniä, mutta tehokkaita ohjelmia lauseiden muodossa, jotka määrittelevät tekstimalleja, jotka on etsittävä asiakirjan jokaiselta riviltä ja toiminnot, jotka on suoritettava, kun vastaavuus löytyy linja. Awkia käytetään enimmäkseen kuvioiden skannaukseen ja käsittelyyn. Se etsii yhdestä tai useammasta tiedostosta nähdäkseen, sisältävätkö ne rivejä, jotka vastaavat määritettyjä malleja, ja suorittaa sitten niihin liittyvät toiminnot.
Awk on lyhennetty kehittäjien – Aho, Weinberger ja Kernighan – nimistä.
MITÄ VOIMME TEHDÄ AWK:N KANSSA?
1. AWK-toiminnot:
(a) Skannaa tiedoston rivi riviltä
(b) Jakaa jokaisen syöttörivin kenttiin
(c) Vertaa syöttöriviä/kenttiä kuvioon
(d) Suorittaa toimenpiteitä sovitetuilla riveillä
2. Hyödyllinen:
(a) Muunna datatiedostoja
(b) tuottaa muotoiltuja raportteja
3. Ohjelmointirakenteet:
(a) Muotoile lähtölinjat
(b) Aritmeettiset ja merkkijonooperaatiot
(c) Ehdot ja silmukat
Syntaksi:
awk options 'selection _criteria {action }' input-file>output-file> Vaihtoehdot:
-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>
Esimerkkikomennot
Esimerkki:
Harkitse seuraavaa tekstitiedostoa syöttötiedostona kaikissa alla olevissa tapauksissa:
$cat>työntekijä.txt>> $ awk '{print}' employee.txt>
Lähtö:
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>
Yllä olevassa esimerkissä kuviota ei anneta. Toiminnot ovat siis sovellettavissa kaikille linjoille. Toimintotulostus ilman argumenttia tulostaa oletuksena koko rivin, joten se tulostaa tiedoston kaikki rivit ilman virhettä.
2. Tulosta viivat, jotka vastaavat annettua kuviota.
$ awk '/manager/ {print}' employee.txt> Lähtö:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Yllä olevassa esimerkissä awk-komento tulostaa kaikki rivit, jotka vastaavat 'manager' -komentoa.
3. Viivan jakaminen kenttiin: Jokaiselle tietueelle eli riville awk-komento jakaa oletusarvoisesti välilyönnillä rajatun tietueen ja tallentaa sen $n muuttujiin. Jos rivillä on 4 sanaa, se tallennetaan vastaavasti $1, $2, $3 ja $4. Lisäksi $0 edustaa koko riviä.
$ awk '{print $1,$4}' employee.txt> Lähtö:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Yllä olevassa esimerkissä $1 ja $4 edustavat Nimi- ja Palkkakenttiä.
Sisäänrakennetut muuttujat awkissa
Awkin sisäänrakennetut muuttujat sisältävät kenttämuuttujia - $1, $2, $3 ja niin edelleen ($0 on koko rivi) - jotka jakavat tekstirivin yksittäisiksi sanoiksi tai kentiksi kutsuttuihin osiin.
NR: NR-komento pitää syöttötietueiden lukumäärän nykyisen määrän. Muista, että tietueet ovat yleensä rivejä. Awk-komento suorittaa malli-/toimintolausekkeet kerran jokaiselle tiedoston tietueelle. NF: NF-komento pitää kenttien määrän nykyisessä syöttötietueessa. FS: FS-komento sisältää kentän erotinmerkin, jota käytetään jakamaan kentät syöttörivillä. Oletuksena on välilyönti, joka tarkoittaa välilyönti- ja sarkainmerkkejä. FS voidaan määrittää uudelleen toiselle merkille (yleensä kohdassa BEGIN) kentän erottimen muuttamiseksi. RS: RS-komento tallentaa nykyisen tietueen erotinmerkin. Koska oletusarvoisesti syöttörivi on syöttötietue, oletustietueen erotinmerkki on rivinvaihto. OFS: OFS-komento tallentaa tuloskenttäerottimen, joka erottaa kentät, kun Awk tulostaa ne. Oletusarvo on tyhjä tila. Aina kun tulostuksessa on useita pilkuilla erotettuja parametreja, se tulostaa OFS:n arvon kunkin parametrin väliin. ORS: ORS-komento tallentaa tulostietueen erottimen, joka erottaa tulostusrivit, kun Awk tulostaa ne. Oletusarvo on rivinvaihtomerkki. print tulostaa automaattisesti ORS:n sisällön tulostettavaksi annettujen tietojen lopussa.
Esimerkkejä:
Sisäänrakennettujen NR-muuttujien käyttö (näyttörivin numero)
$ awk '{print NR,$0}' employee.txt> Lähtö:
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>
Yllä olevassa esimerkissä awk-komento, jossa on NR, tulostaa kaikki rivit rivinumeron kanssa.
Sisäisten NF-muuttujien käyttö (Näytä viimeinen kenttä)
$ awk '{print $1,$NF}' employee.txt> Lähtö:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Yllä olevassa esimerkissä $1 edustaa nimeä ja $NF edustaa palkkaa. Voimme saada Palkan käyttämällä $NF , jossa $NF edustaa viimeistä kenttää.
Toinen sisäänrakennettujen NR-muuttujien käyttö (Display Line From 3-6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Lähtö:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Lisää esimerkkejä
Annetulle tekstitiedostolle:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Mies B6 2 Praveen M42 3>
1) Ensimmäisen kohteen tulostaminen geeksforgeeks.txt-tiedoston jokaiselta riviltä rivinumeron (NR) kanssa erotettuna -merkillä:
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Toisen sarakkeen/kohteen palauttaminen tiedostosta geeksforgeeks.txt:
Kysymyksen pitäisi olla: - Toisen sarakkeen/kohteen palauttaminen tiedostosta geeksforgeeks.txt:
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Tulosta mikä tahansa ei-tyhjä rivi, jos sellainen on
$ awk 'NF <0' geeksforgeeks.txt>
tässä NF:n tulee olla 0 vähintään ja käyttäjän on tulostettava myös rivinumero:
oikea vastaus: awk 'NF == 0 {print NR}' geeksforgeeks.txt
TAI
awk 'NF <= 0 {tulosta NR}' geeksforgeeks.txt
0>
4) Löydät tiedostossa olevan pisimmän rivin pituuden seuraavasti:
$ awk '{ if (length($0)>max) max = pituus($0) } END { print max }' geeksforgeeks.txt> 13>
5) Tiedoston rivien laskeminen:
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Tulostusrivit, joissa on yli 10 merkkiä:
$ awk 'length($0)>10' geeksforgeeks.txt>> $ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt>
8) Tulosta ensimmäisten numeroiden neliöt 1:stä n:ään sanomalla 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 = pituus(Awk on komentosarjakieli, jota käytetään tietojen käsittelyyn ja raporttien luomiseen. awk-komentoohjelmointikieli ei vaadi kääntämistä ja antaa käyttäjälle mahdollisuuden käyttää muuttujia, numeerisia toimintoja, merkkijonofunktioita ja loogisia operaattoreita.
Awk on apuohjelma, jonka avulla ohjelmoija voi kirjoittaa pieniä, mutta tehokkaita ohjelmia lauseiden muodossa, jotka määrittelevät tekstimalleja, jotka on etsittävä asiakirjan jokaiselta riviltä ja toiminnot, jotka on suoritettava, kun vastaavuus löytyy linja. Awkia käytetään enimmäkseen kuvioiden skannaukseen ja käsittelyyn. Se etsii yhdestä tai useammasta tiedostosta nähdäkseen, sisältävätkö ne rivejä, jotka vastaavat määritettyjä malleja, ja suorittaa sitten niihin liittyvät toiminnot.
Awk on lyhennetty kehittäjien – Aho, Weinberger ja Kernighan – nimistä.
MITÄ VOIMME TEHDÄ AWK:N KANSSA?
1. AWK-toiminnot:
(a) Skannaa tiedoston rivi riviltä
(b) Jakaa jokaisen syöttörivin kenttiin
(c) Vertaa syöttöriviä/kenttiä kuvioon
(d) Suorittaa toimenpiteitä sovitetuilla riveillä
2. Hyödyllinen:
(a) Muunna datatiedostoja
(b) tuottaa muotoiltuja raportteja
3. Ohjelmointirakenteet:
(a) Muotoile lähtölinjat
(b) Aritmeettiset ja merkkijonooperaatiot
(c) Ehdot ja silmukat
Syntaksi:
awk options 'selection _criteria {action }' input-file>output-file> Vaihtoehdot:
-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>
Esimerkkikomennot
Esimerkki:
Harkitse seuraavaa tekstitiedostoa syöttötiedostona kaikissa alla olevissa tapauksissa:
$cat>työntekijä.txt>> $ awk '{print}' employee.txt>
Lähtö:
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>
Yllä olevassa esimerkissä kuviota ei anneta. Toiminnot ovat siis sovellettavissa kaikille linjoille. Toimintotulostus ilman argumenttia tulostaa oletuksena koko rivin, joten se tulostaa tiedoston kaikki rivit ilman virhettä.
2. Tulosta viivat, jotka vastaavat annettua kuviota.
$ awk '/manager/ {print}' employee.txt> Lähtö:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Yllä olevassa esimerkissä awk-komento tulostaa kaikki rivit, jotka vastaavat 'manager' -komentoa.
3. Viivan jakaminen kenttiin: Jokaiselle tietueelle eli riville awk-komento jakaa oletusarvoisesti välilyönnillä rajatun tietueen ja tallentaa sen $n muuttujiin. Jos rivillä on 4 sanaa, se tallennetaan vastaavasti $1, $2, $3 ja $4. Lisäksi $0 edustaa koko riviä.
$ awk '{print $1,$4}' employee.txt> Lähtö:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Yllä olevassa esimerkissä $1 ja $4 edustavat Nimi- ja Palkkakenttiä.
Sisäänrakennetut muuttujat awkissa
Awkin sisäänrakennetut muuttujat sisältävät kenttämuuttujia - $1, $2, $3 ja niin edelleen ($0 on koko rivi) - jotka jakavat tekstirivin yksittäisiksi sanoiksi tai kentiksi kutsuttuihin osiin.
NR: NR-komento pitää syöttötietueiden lukumäärän nykyisen määrän. Muista, että tietueet ovat yleensä rivejä. Awk-komento suorittaa malli-/toimintolausekkeet kerran jokaiselle tiedoston tietueelle. NF: NF-komento pitää kenttien määrän nykyisessä syöttötietueessa. FS: FS-komento sisältää kentän erotinmerkin, jota käytetään jakamaan kentät syöttörivillä. Oletuksena on välilyönti, joka tarkoittaa välilyönti- ja sarkainmerkkejä. FS voidaan määrittää uudelleen toiselle merkille (yleensä kohdassa BEGIN) kentän erottimen muuttamiseksi. RS: RS-komento tallentaa nykyisen tietueen erotinmerkin. Koska oletusarvoisesti syöttörivi on syöttötietue, oletustietueen erotinmerkki on rivinvaihto. OFS: OFS-komento tallentaa tuloskenttäerottimen, joka erottaa kentät, kun Awk tulostaa ne. Oletusarvo on tyhjä tila. Aina kun tulostuksessa on useita pilkuilla erotettuja parametreja, se tulostaa OFS:n arvon kunkin parametrin väliin. ORS: ORS-komento tallentaa tulostietueen erottimen, joka erottaa tulostusrivit, kun Awk tulostaa ne. Oletusarvo on rivinvaihtomerkki. print tulostaa automaattisesti ORS:n sisällön tulostettavaksi annettujen tietojen lopussa.
Esimerkkejä:
Sisäänrakennettujen NR-muuttujien käyttö (näyttörivin numero)
$ awk '{print NR,$0}' employee.txt> Lähtö:
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>
Yllä olevassa esimerkissä awk-komento, jossa on NR, tulostaa kaikki rivit rivinumeron kanssa.
Sisäisten NF-muuttujien käyttö (Näytä viimeinen kenttä)
$ awk '{print $1,$NF}' employee.txt> Lähtö:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Yllä olevassa esimerkissä $1 edustaa nimeä ja $NF edustaa palkkaa. Voimme saada Palkan käyttämällä $NF , jossa $NF edustaa viimeistä kenttää.
Toinen sisäänrakennettujen NR-muuttujien käyttö (Display Line From 3-6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Lähtö:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Lisää esimerkkejä
Annetulle tekstitiedostolle:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Mies B6 2 Praveen M42 3>
1) Ensimmäisen kohteen tulostaminen geeksforgeeks.txt-tiedoston jokaiselta riviltä rivinumeron (NR) kanssa erotettuna -merkillä:
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Toisen sarakkeen/kohteen palauttaminen tiedostosta geeksforgeeks.txt:
Kysymyksen pitäisi olla: - Toisen sarakkeen/kohteen palauttaminen tiedostosta geeksforgeeks.txt:
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Tulosta mikä tahansa ei-tyhjä rivi, jos sellainen on
$ awk 'NF <0' geeksforgeeks.txt>
tässä NF:n tulee olla 0 vähintään ja käyttäjän on tulostettava myös rivinumero:
oikea vastaus: awk 'NF == 0 {print NR}' geeksforgeeks.txt
TAI
awk 'NF <= 0 {tulosta NR}' geeksforgeeks.txt
0>
4) Löydät tiedostossa olevan pisimmän rivin pituuden seuraavasti:
$ awk '{ if (length($0)>max) max = pituus($0) } END { print max }' geeksforgeeks.txt> 13>
5) Tiedoston rivien laskeminen:
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Tulostusrivit, joissa on yli 10 merkkiä:
$ awk 'length($0)>10' geeksforgeeks.txt>> $ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt>
8) Tulosta ensimmäisten numeroiden neliöt 1:stä n:ään sanomalla 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) Tiedoston rivien laskeminen:
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Tulostusrivit, joissa on yli 10 merkkiä:
$ awk 'length()>10' geeksforgeeks.txt>> Awk on komentosarjakieli, jota käytetään tietojen käsittelyyn ja raporttien luomiseen. awk-komentoohjelmointikieli ei vaadi kääntämistä ja antaa käyttäjälle mahdollisuuden käyttää muuttujia, numeerisia toimintoja, merkkijonofunktioita ja loogisia operaattoreita.
Awk on apuohjelma, jonka avulla ohjelmoija voi kirjoittaa pieniä, mutta tehokkaita ohjelmia lauseiden muodossa, jotka määrittelevät tekstimalleja, jotka on etsittävä asiakirjan jokaiselta riviltä ja toiminnot, jotka on suoritettava, kun vastaavuus löytyy linja. Awkia käytetään enimmäkseen kuvioiden skannaukseen ja käsittelyyn. Se etsii yhdestä tai useammasta tiedostosta nähdäkseen, sisältävätkö ne rivejä, jotka vastaavat määritettyjä malleja, ja suorittaa sitten niihin liittyvät toiminnot.
Awk on lyhennetty kehittäjien – Aho, Weinberger ja Kernighan – nimistä.
MITÄ VOIMME TEHDÄ AWK:N KANSSA?
1. AWK-toiminnot:
(a) Skannaa tiedoston rivi riviltä
(b) Jakaa jokaisen syöttörivin kenttiin
(c) Vertaa syöttöriviä/kenttiä kuvioon
(d) Suorittaa toimenpiteitä sovitetuilla riveillä2. Hyödyllinen:
(a) Muunna datatiedostoja
(b) tuottaa muotoiltuja raportteja3. Ohjelmointirakenteet:
(a) Muotoile lähtölinjat
(b) Aritmeettiset ja merkkijonooperaatiot
(c) Ehdot ja silmukatSyntaksi:
awk options 'selection _criteria {action }' input-file>output-file>Vaihtoehdot:
-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>Esimerkkikomennot
Esimerkki:
Harkitse seuraavaa tekstitiedostoa syöttötiedostona kaikissa alla olevissa tapauksissa:
$cat>työntekijä.txt>>$ awk '{print}' employee.txt> Lähtö:
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>Yllä olevassa esimerkissä kuviota ei anneta. Toiminnot ovat siis sovellettavissa kaikille linjoille. Toimintotulostus ilman argumenttia tulostaa oletuksena koko rivin, joten se tulostaa tiedoston kaikki rivit ilman virhettä.
2. Tulosta viivat, jotka vastaavat annettua kuviota.
$ awk '/manager/ {print}' employee.txt>Lähtö:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>Yllä olevassa esimerkissä awk-komento tulostaa kaikki rivit, jotka vastaavat 'manager' -komentoa.
3. Viivan jakaminen kenttiin: Jokaiselle tietueelle eli riville awk-komento jakaa oletusarvoisesti välilyönnillä rajatun tietueen ja tallentaa sen $n muuttujiin. Jos rivillä on 4 sanaa, se tallennetaan vastaavasti $1, $2, $3 ja $4. Lisäksi $0 edustaa koko riviä.
$ awk '{print $1,$4}' employee.txt>Lähtö:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>Yllä olevassa esimerkissä $1 ja $4 edustavat Nimi- ja Palkkakenttiä.
Sisäänrakennetut muuttujat awkissa
Awkin sisäänrakennetut muuttujat sisältävät kenttämuuttujia - $1, $2, $3 ja niin edelleen ($0 on koko rivi) - jotka jakavat tekstirivin yksittäisiksi sanoiksi tai kentiksi kutsuttuihin osiin.
NR: NR-komento pitää syöttötietueiden lukumäärän nykyisen määrän. Muista, että tietueet ovat yleensä rivejä. Awk-komento suorittaa malli-/toimintolausekkeet kerran jokaiselle tiedoston tietueelle. NF: NF-komento pitää kenttien määrän nykyisessä syöttötietueessa. FS: FS-komento sisältää kentän erotinmerkin, jota käytetään jakamaan kentät syöttörivillä. Oletuksena on välilyönti, joka tarkoittaa välilyönti- ja sarkainmerkkejä. FS voidaan määrittää uudelleen toiselle merkille (yleensä kohdassa BEGIN) kentän erottimen muuttamiseksi. RS: RS-komento tallentaa nykyisen tietueen erotinmerkin. Koska oletusarvoisesti syöttörivi on syöttötietue, oletustietueen erotinmerkki on rivinvaihto. OFS: OFS-komento tallentaa tuloskenttäerottimen, joka erottaa kentät, kun Awk tulostaa ne. Oletusarvo on tyhjä tila. Aina kun tulostuksessa on useita pilkuilla erotettuja parametreja, se tulostaa OFS:n arvon kunkin parametrin väliin. ORS: ORS-komento tallentaa tulostietueen erottimen, joka erottaa tulostusrivit, kun Awk tulostaa ne. Oletusarvo on rivinvaihtomerkki. print tulostaa automaattisesti ORS:n sisällön tulostettavaksi annettujen tietojen lopussa.
Esimerkkejä:
Sisäänrakennettujen NR-muuttujien käyttö (näyttörivin numero)
$ awk '{print NR,$0}' employee.txt>Lähtö:
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>Yllä olevassa esimerkissä awk-komento, jossa on NR, tulostaa kaikki rivit rivinumeron kanssa.
Sisäisten NF-muuttujien käyttö (Näytä viimeinen kenttä)
$ awk '{print $1,$NF}' employee.txt>Lähtö:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>Yllä olevassa esimerkissä $1 edustaa nimeä ja $NF edustaa palkkaa. Voimme saada Palkan käyttämällä $NF , jossa $NF edustaa viimeistä kenttää.
Toinen sisäänrakennettujen NR-muuttujien käyttö (Display Line From 3-6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt>Lähtö:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>Lisää esimerkkejä
Annetulle tekstitiedostolle:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Mies B6 2 Praveen M42 3>1) Ensimmäisen kohteen tulostaminen geeksforgeeks.txt-tiedoston jokaiselta riviltä rivinumeron (NR) kanssa erotettuna -merkillä:
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt>1 - A 2 - Tarun 3 – Manav 4 - Praveen>2) Toisen sarakkeen/kohteen palauttaminen tiedostosta geeksforgeeks.txt:
Kysymyksen pitäisi olla: - Toisen sarakkeen/kohteen palauttaminen tiedostosta geeksforgeeks.txt:
$ awk '{print $2}' geeksforgeeks.txt>B A12 B6 M42>3) Tulosta mikä tahansa ei-tyhjä rivi, jos sellainen on
$ awk 'NF <0' geeksforgeeks.txt>tässä NF:n tulee olla 0 vähintään ja käyttäjän on tulostettava myös rivinumero:
oikea vastaus: awk 'NF == 0 {print NR}' geeksforgeeks.txt
TAI
awk 'NF <= 0 {tulosta NR}' geeksforgeeks.txt
0>4) Löydät tiedostossa olevan pisimmän rivin pituuden seuraavasti:
$ awk '{ if (length($0)>max) max = pituus($0) } END { print max }' geeksforgeeks.txt>13>5) Tiedoston rivien laskeminen:
$ awk 'END { print NR }' geeksforgeeks.txt>3>6) Tulostusrivit, joissa on yli 10 merkkiä:
$ awk 'length($0)>10' geeksforgeeks.txt>>$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt> 8) Tulosta ensimmäisten numeroiden neliöt 1:stä n:ään sanomalla 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 on komentosarjakieli, jota käytetään tietojen käsittelyyn ja raporttien luomiseen. awk-komentoohjelmointikieli ei vaadi kääntämistä ja antaa käyttäjälle mahdollisuuden käyttää muuttujia, numeerisia toimintoja, merkkijonofunktioita ja loogisia operaattoreita.
Awk on apuohjelma, jonka avulla ohjelmoija voi kirjoittaa pieniä, mutta tehokkaita ohjelmia lauseiden muodossa, jotka määrittelevät tekstimalleja, jotka on etsittävä asiakirjan jokaiselta riviltä ja toiminnot, jotka on suoritettava, kun vastaavuus löytyy linja. Awkia käytetään enimmäkseen kuvioiden skannaukseen ja käsittelyyn. Se etsii yhdestä tai useammasta tiedostosta nähdäkseen, sisältävätkö ne rivejä, jotka vastaavat määritettyjä malleja, ja suorittaa sitten niihin liittyvät toiminnot.
Awk on lyhennetty kehittäjien – Aho, Weinberger ja Kernighan – nimistä.
MITÄ VOIMME TEHDÄ AWK:N KANSSA?
1. AWK-toiminnot:
(a) Skannaa tiedoston rivi riviltä
(b) Jakaa jokaisen syöttörivin kenttiin
(c) Vertaa syöttöriviä/kenttiä kuvioon
(d) Suorittaa toimenpiteitä sovitetuilla riveillä2. Hyödyllinen:
(a) Muunna datatiedostoja
(b) tuottaa muotoiltuja raportteja3. Ohjelmointirakenteet:
(a) Muotoile lähtölinjat
(b) Aritmeettiset ja merkkijonooperaatiot
(c) Ehdot ja silmukatSyntaksi:
awk options 'selection _criteria {action }' input-file>output-file>Vaihtoehdot:
-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>Esimerkkikomennot
Esimerkki:
Harkitse seuraavaa tekstitiedostoa syöttötiedostona kaikissa alla olevissa tapauksissa:
$cat>työntekijä.txt>>$ awk '{print}' employee.txt>
Lähtö:
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>
Yllä olevassa esimerkissä kuviota ei anneta. Toiminnot ovat siis sovellettavissa kaikille linjoille. Toimintotulostus ilman argumenttia tulostaa oletuksena koko rivin, joten se tulostaa tiedoston kaikki rivit ilman virhettä.
2. Tulosta viivat, jotka vastaavat annettua kuviota.
$ awk '/manager/ {print}' employee.txt> Lähtö:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Yllä olevassa esimerkissä awk-komento tulostaa kaikki rivit, jotka vastaavat 'manager' -komentoa.
3. Viivan jakaminen kenttiin: Jokaiselle tietueelle eli riville awk-komento jakaa oletusarvoisesti välilyönnillä rajatun tietueen ja tallentaa sen $n muuttujiin. Jos rivillä on 4 sanaa, se tallennetaan vastaavasti $1, $2, $3 ja $4. Lisäksi $0 edustaa koko riviä.
$ awk '{print $1,$4}' employee.txt> Lähtö:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Yllä olevassa esimerkissä $1 ja $4 edustavat Nimi- ja Palkkakenttiä.
Sisäänrakennetut muuttujat awkissa
Awkin sisäänrakennetut muuttujat sisältävät kenttämuuttujia - $1, $2, $3 ja niin edelleen ($0 on koko rivi) - jotka jakavat tekstirivin yksittäisiksi sanoiksi tai kentiksi kutsuttuihin osiin.
- NR: NR-komento pitää syöttötietueiden lukumäärän nykyisen määrän. Muista, että tietueet ovat yleensä rivejä. Awk-komento suorittaa malli-/toimintolausekkeet kerran jokaiselle tiedoston tietueelle. NF: NF-komento pitää kenttien määrän nykyisessä syöttötietueessa. FS: FS-komento sisältää kentän erotinmerkin, jota käytetään jakamaan kentät syöttörivillä. Oletuksena on välilyönti, joka tarkoittaa välilyönti- ja sarkainmerkkejä. FS voidaan määrittää uudelleen toiselle merkille (yleensä kohdassa BEGIN) kentän erottimen muuttamiseksi. RS: RS-komento tallentaa nykyisen tietueen erotinmerkin. Koska oletusarvoisesti syöttörivi on syöttötietue, oletustietueen erotinmerkki on rivinvaihto. OFS: OFS-komento tallentaa tuloskenttäerottimen, joka erottaa kentät, kun Awk tulostaa ne. Oletusarvo on tyhjä tila. Aina kun tulostuksessa on useita pilkuilla erotettuja parametreja, se tulostaa OFS:n arvon kunkin parametrin väliin. ORS: ORS-komento tallentaa tulostietueen erottimen, joka erottaa tulostusrivit, kun Awk tulostaa ne. Oletusarvo on rivinvaihtomerkki. print tulostaa automaattisesti ORS:n sisällön tulostettavaksi annettujen tietojen lopussa.
Esimerkkejä:
Sisäänrakennettujen NR-muuttujien käyttö (näyttörivin numero)
$ awk '{print NR,$0}' employee.txt> Lähtö:
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>
Yllä olevassa esimerkissä awk-komento, jossa on NR, tulostaa kaikki rivit rivinumeron kanssa.
Sisäisten NF-muuttujien käyttö (Näytä viimeinen kenttä)
$ awk '{print $1,$NF}' employee.txt> Lähtö:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Yllä olevassa esimerkissä $1 edustaa nimeä ja $NF edustaa palkkaa. Voimme saada Palkan käyttämällä $NF , jossa $NF edustaa viimeistä kenttää.
Toinen sisäänrakennettujen NR-muuttujien käyttö (Display Line From 3-6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Lähtö:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Lisää esimerkkejä
Annetulle tekstitiedostolle:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Mies B6 2 Praveen M42 3>
1) Ensimmäisen kohteen tulostaminen geeksforgeeks.txt-tiedoston jokaiselta riviltä rivinumeron (NR) kanssa erotettuna -merkillä:
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Toisen sarakkeen/kohteen palauttaminen tiedostosta geeksforgeeks.txt:
Kysymyksen pitäisi olla: - Toisen sarakkeen/kohteen palauttaminen tiedostosta geeksforgeeks.txt:
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Tulosta mikä tahansa ei-tyhjä rivi, jos sellainen on
$ awk 'NF <0' geeksforgeeks.txt>
tässä NF:n tulee olla 0 vähintään ja käyttäjän on tulostettava myös rivinumero:
oikea vastaus: awk 'NF == 0 {print NR}' geeksforgeeks.txt
TAI
awk 'NF <= 0 {tulosta NR}' geeksforgeeks.txt
0>
4) Löydät tiedostossa olevan pisimmän rivin pituuden seuraavasti:
$ awk '{ if (length($0)>max) max = pituus($0) } END { print max }' geeksforgeeks.txt> 13>
5) Tiedoston rivien laskeminen:
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Tulostusrivit, joissa on yli 10 merkkiä:
$ awk 'length($0)>10' geeksforgeeks.txt>>$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt>
8) Tulosta ensimmäisten numeroiden neliöt 1:stä n:ään sanomalla 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>