Awk on skriptikieli, jota käytetään manipuloimalla tiedot ja tuottaa raportteja.Awk-komento ohjelmointi kieli ei vaadi kokoamiseen, ja käyttäjä voi käyttää muuttujia, numeerisia toimintoja, string toimintoja, ja loogisia operaattoreita.
Awk on apuohjelma, jonka avulla ohjelmoija kirjoittaa pieniä mutta tehokkaita ohjelmia muodossa lausuntoja, jotka määrittävät tekstin kuvioita, jotka on etsinyt jokaisen rivin asiakirjan ja toimia, jotka on toteutettava, kun ottelu on löytynyt kuluessa line., Awk: ta käytetään enimmäkseen kuvioiden skannaukseen ja käsittelyyn. Se etsii yhden tai useamman tiedoston nähdäkseen, sisältävätkö ne rivejä, jotka vastaavat määriteltyjä kuvioita ja suorittaa niihin liittyvät toimet.
Awk on lyhennetty kehittäjien – Ahon, Weinbergerin ja Kernighanin-nimistä.
mitä AWK: lla voi tehdä ?
1. AWK-Toiminnot:
(a) Skannaa tiedostoon rivi kerrallaan
(b) Jakaa kullekin input line kenttiin
(c) Vertaa input line/kentät kuvio
(d) Suorittaa toiminta(t) vastaavat rivit
2., Hyödyllistä:
(a) Transform data files
(b) tuottaa alustettuja raportteja
3. Ohjelmointi Konstruktioita:
(a) – Muodon lähtö linjat
(b) Aritmeettinen ja merkkijono-operaatioiden
(c) Ehtolauseet ja silmukat
Syntax:
awk options 'selection _criteria {action }' input-file > output-file
Värivaihtoehdot:
-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
Näyte Komennot
Esimerkki:
Harkitse seuraavia teksti-tiedosto, kuten input file kaikissa tapauksissa alle.
$cat > employee.txt
ajay manager account 45000sunil clerk account 25000varun manager sales 50000amit manager account 47000tarun peon sales 15000deepak clerk sales 23000sunil peon sales 13000satvik director purchase 80000
1. Awk : n oletuskäyttäytyminen: oletuksena Awk tulostaa jokaisen tietorivin määritellystä tiedostosta.,
$ awk '{print}' employee.txt
Output:
ajay manager account 45000sunil clerk account 25000varun manager sales 50000amit manager account 47000tarun peon sales 15000deepak clerk sales 23000sunil peon sales 13000satvik director purchase 80000
yllä olevassa esimerkissä, ei kuvio on annettu. Toimet koskevat siis kaikkia linjoja. Action print ilman mitään argumenttia tulostaa oletuksena koko rivin, joten se tulostaa kaikki tiedoston rivit epäonnistumatta.
2. Tulosta rivit, jotka vastaavat annettua kaavaa.
$ awk '/manager/ {print}' employee.txt
Output:
ajay manager account 45000varun manager sales 50000amit manager account 47000
edellä olevassa esimerkissä awk-komento tulostaa kaikki linja, joka vastaa kanssa ”johtaja”.
3., Halkaisu Linja Kenttiin : kunkin tietueen minä.e-line, awk-komento jakaa ennätys rajaamaa välilyönnillä merkki oletuksena ja tallentaa sen $n muuttujia. Jos rivi on 4 sanaa, se tallennetaan $1, $2, $3 ja $4 vastaavasti. Myös $0 edustaa koko linjaa.
$ awk '{print $1,$4}' employee.txt
Output:
ajay 45000sunil 25000varun 50000amit 47000tarun 15000deepak 23000sunil 13000satvik 80000
yllä olevassa esimerkissä, $1 ja $4 edustaa Nimi ja Palkka kentät vastaavasti.,
Sisäänrakennettu Muuttujat Awk –
Awk on sisäänrakennettu muuttujat ovat kentän muuttujat—$1, $2, $3, ja niin edelleen ($0, on koko linja) — joka murtaa tekstin yksittäisiä sanoja tai paloja kutsutaan kentät.
NR: n komento pitää nykyisen määrän syöttötietojen määrästä. Muista, että levyt ovat yleensä rivejä. Awk-komento suorittaa kuvio – / toimintalausekkeet kerran jokaiselle tiedostossa olevalle tietueelle.
NF: n komento pitää lukemaa kentistä nykyisen syöttötietueen sisällä.,
FS: FS-komento sisältää kentän erotinmerkkiä, jota käytetään erottamaan kentät input line. Oletusarvo on ”valkoinen tila” eli tila-ja välilehtimerkit. FS voidaan siirtää toiseen merkistöön (tyypillisesti alussa) kenttäerottimen muuttamiseksi.
RS: RS-komento tallentaa nykyisen levyerottimen merkin. Koska oletuksena, tulo linja on tulo ennätys, default tietue-erotin merkki on rivinvaihto.
OFS: OFS-komento tallentaa output-kentän erotin, joka erottaa kentät, kun Awk tulostaa ne. Oletusarvo on tyhjä tila., Aina kun printillä on useita pilkun kanssa erotettuja parametreja, se tulostaa OFS: n arvon kunkin parametrin väliin.
ORS: ORS-komento tallentaa lähtö tietue-erotin, joka erottaa lähtö linjat, kun Awk tulostaa ne. Oletusarvo on newline-merkki. tulosta automaattisesti ulostulot sisältö ORS lopussa mitä se annetaan tulostaa.,
Esimerkkejä:
Käyttö NR sisäänrakennettu muuttujat (Näytön Rivi Numero)
$ awk '{print NR,$0}' employee.txt
Output:
1 ajay manager account 450002 sunil clerk account 250003 varun manager sales 500004 amit manager account 470005 tarun peon sales 150006 deepak clerk sales 230007 sunil peon sales 130008 satvik director purchase 80000
edellä olevassa esimerkissä awk-komento NR tulostaa kaikki rivit, sekä rivin numero.
Käyttö NF sisäänrakennettu muuttujat (Näyttö Viimeinen Kenttä)
$ awk '{print $1,$NF}' employee.txt
Output:
ajay 45000sunil 25000varun 50000amit 47000tarun 15000deepak 23000sunil 13000satvik 80000
yllä olevassa esimerkissä $1 on Nimi ja $NF edustaa Palkka. Voimme saada palkan $NF: llä , jossa $NF edustaa viimeistä kenttää.,
Toinen käyttää NR: sisäänrakennettu muuttujat (Näytön Rivi 3 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt
Output:
3 varun manager sales 500004 amit manager account 470005 tarun peon sales 150006 deepak clerk sales 23000
Lisää Esimerkkejä
tietyn tekstitiedosto:
$cat > geeksforgeeks.txtA B CTarun A12 1Man B6 2Praveen M42 3
1) tulosta ensimmäinen erä sekä rivin numero(NR) erotettu ” – ” alkaen jokainen rivi geeksforgeeks.txt:
$ awk '{print NR "- " $1 }' geeksforgeeks.txt
1 - Tarun2 – Manav 3 - Praveen
2) palauttaa toisen rivin/erä geeksforgeeks.,est linja läsnä-tiedosto:
$ awk '{ if (length($0) > max) max = length($0) } END { print max }' geeksforgeeks.txt
13
5) laskea rivit tiedostoon:
$ awk 'END { print NR }' geeksforgeeks.txt
3
6) Tulostus rivit, joissa on enemmän kuin 10 merkkiä:
$ awk 'length($0) > 10' geeksforgeeks.txt
Tarun A12 1Praveen M42 3
7) löytää/tarkistaa tahansa merkkijono erityisiä sarake:
$ awk '{ if($3 == "B6") print $0;}' geeksforgeeks.txt
8) tulostaa neliöt ensin numerot 1 n sanoa 6:
$ awk 'BEGIN { for(i=1;i<=6;i++) print "square of", i, "is",i*i; }'
square of 1 is 1square of 2 is 4square of 3 is 9square of 4 is 16square of 5 is 25square of 6 is 36
Tämä artikkeli on osaltaan Anshika Goyal ja Praveen Negi., Jos pidät GeeksforGeeks ja haluat edistää, voit myös kirjoittaa artikkeli käyttää contribute.geeksforgeeks.org tai lähetä artikkeli [email protected]. Katso artikkeli näy GeeksforGeeks tärkein sivu ja auttaa muita Nörttejä.