Awk

Kuinka käyttää AWK ta Linuxissa

Kuinka käyttää AWK ta Linuxissa

Linuxin tarjoamat apuohjelmat noudattavat usein UNIX-suunnittelufilosofiaa. Kaikkien työkalujen tulee olla pieniä, käyttää I / O: lle pelkkää tekstiä ja toimia modulaarisesti. Perinnön ansiosta meillä on hienoimpia tekstinkäsittelytoimintoja työkalujen, kuten sed ja awk, avulla.

Linuxissa awk-työkalu on esiasennettu kaikkiin Linux-distroihin. AWK itsessään on ohjelmointikieli. AWK-työkalu on vain AWK-ohjelmointikielen tulkki. Tässä oppaassa tutustu AWK: n käyttämiseen Linuxissa.

AWK-käyttö

AWK-työkalu on hyödyllisin, kun tekstit on järjestetty ennustettavaan muotoon. Se on melko hyvä jäsentää ja manipuloida taulukkotietoja. Se toimii rivi riviltä, ​​koko tekstitiedostossa.

Awk: n oletuskäyttäytyminen on käyttää välilyöntejä (välilyöntejä, sarkaimia jne.) kenttien erottamiseksi. Onneksi monet Linuxin kokoonpanotiedostoista noudattavat tätä mallia.

Perussyntaksi

Tältä näyttää awk: n komentorakenne.

$ awk '// ; ; '

Komennon osat ovat melko itsestään selviä. Awk voi toimia ilman haku- tai toiminto-osaa. Jos mitään ei määritetä, ottelun oletustoiminto on vain tulostus. Pohjimmiltaan awk tulostaa kaikki tiedostosta löytyvät ottelut.

Jos hakukuviota ei ole määritetty, awk suorittaa määritetyt toiminnot tiedoston jokaisella rivillä.

Jos molemmat osat on annettu, awk käyttää kuviota määrittääkseen, vastaako nykyinen viiva sitä. Jos täsmää, awk suorittaa määritetyn toiminnon.

Huomaa, että awk voi toimia myös uudelleenohjattujen tekstien kanssa. Tämä voidaan saavuttaa pipetoimalla komennon sisältö awk: n mukaan toimimaan. Lisätietoja Linux-putkikomennosta.

Esittelytarkoituksiin tässä on esimerkkitekstitiedosto. Se sisältää 10 riviä, 2 sanaa riviä kohden.

$ kissanäyte.txt

Tavallinen ilme

Yksi avainominaisuuksista, joka tekee awk: stä tehokkaan työkalun, on säännöllisen lausekkeen (regex, lyhyesti) tuki. Säännöllinen lauseke on merkkijono, joka edustaa tiettyä merkkikuviota.

Tässä on luettelo yleisimmistä säännöllisen lausekkeen syntaksista. Nämä regex-syntaksit eivät ole vain ainutlaatuisia awk: lle. Nämä ovat melkein yleismaailmallisia regeksisyntaksia, joten niiden hallitseminen auttaa myös muissa sovelluksissa / ohjelmoinnissa, joihin liittyy säännöllinen lauseke.

  • Perushahmot: Kaikki aakkosnumeeriset merkit alleviivataan (_) jne.
    • Merkistö: Asiakirjan helpottamiseksi regexissä on merkkiryhmiä. Esimerkiksi isot kirjaimet (A-Z), pienet kirjaimet (a-z) ja numeeriset numerot (0-9).
  • Metahahmot: Nämä ovat merkkejä, jotka selittävät erilaisia ​​tapoja laajentaa tavallisia merkkejä.
    • Aika (.): Mikä tahansa merkkihahmo sijainnissa on kelvollinen (paitsi uusi rivi).
    • Tähti (*): Nolla tai useampi sitä edeltävän välittömän merkin olemassaolo on kelvollinen.
    • Sulkumerkki ([]): Ottelu on kelvollinen, jos sijainnissa jokin haarukan merkkeistä on sama. Se voidaan yhdistää merkistöjen kanssa.
    • Koru (^): Ottelun on oltava linjan alussa.
    • Dollari ($): Ottelun on oltava linjan lopussa.
    • Takasuuntainen viiva (\): Jos jokin metahahmo on käytettävä kirjaimellisesti.

Tekstin tulostaminen

Tulosta koko tekstitiedoston sisältö käyttämällä tulostuskomentoa. Hakukuvion tapauksessa mallia ei ole määritelty. Joten awk tulostaa kaikki linjat.

Näyte $ awk 'print'.txt

Tässä "print" on AWK-komento, joka tulostaa syötteen sisällön.

Merkkijono haku

AWK voi suorittaa perustekstihaun annetulle tekstille. Kuvio-osiossa sen on oltava löydettävä teksti.

Seuraavassa komennossa awk etsii tekstiä "nopea" kaikilta tiedostonäytteen riveiltä.txt.

$ awk '/ quick /' näyte.txt

Käytetään nyt joitain säännöllisiä lausekkeita hienosäätääksesi hakua edelleen. Seuraava komento tulostaa kaikki rivit, joiden alussa on "ruskea".

näyte $ awk '/ ^ brown /'.txt

Entä löytää jotain rivin päästä? Seuraava komento tulostaa kaikki rivit, joiden lopussa on "nopea".

näyte $ awk '/ quick $ /'.txt

Villikortti

Seuraava esimerkki esittelee caretin käyttöä (.). Tässä voi olla mikä tahansa kaksi merkkiä ennen merkkiä “e”.

$ awk '/… e /' näyte.txt

Villin kortin kuvio (tähdellä käytetty)

Entä jos sijainnissa voi olla mikä tahansa määrä merkkejä? Käytä tähtiä (*), jotta vastaat mahdollisia merkkejä sijainnista. Tässä AWK vastaa kaikkia rivejä, joissa on mitä tahansa merkkejä "the": n jälkeen.

$ awk '/ * /' näyte.txt

Sulujen ilmaisu

Seuraava esimerkki esittelee hakasulausekkeen käyttöä. Sulkeilmaisu kertoo, että paikalla ottelu on kelvollinen, jos se vastaa suluissa olevaa merkistöä. Esimerkiksi seuraava komento vastaa ”The” ja “Tee” kelvollisina otteluina.

$ awk '/ T [he] e /' näyte.txt

Säännöllisessä lausekkeessa on joitain ennalta määriteltyjä merkistöjä. Esimerkiksi kaikkien isojen kirjainten joukko on merkitty nimellä "A-Z". Seuraavassa komennossa awk vastaa kaikkia sanoja, jotka sisältävät ison kirjaimen.

$ awk '/ [A-Z] /' näyte.txt

Katsokaa seuraavaa merkkisarjojen käyttöä suluilla.

  • [0-9]: Osoittaa yhden numeron
  • [a-z]: Ilmaisee yhden pienen kirjaimen
  • [A-Z]: Osoittaa yhden ison kirjaimen
  • [a-zA-z]: Osoittaa yhden kirjaimen
  • [a-zA-z 0-9]: Ilmaisee yhden merkin tai numeron.

Awk ennalta määritetyt muuttujat

AWK sisältää joukon ennalta määriteltyjä ja automaattisia muuttujia. Nämä muuttujat voivat helpottaa ohjelmien ja komentosarjojen kirjoittamista AWK: lla.

Tässä on joitain yleisimpiä AWK-muuttujia, joita kohtaat.

  • TIEDOSTON NIMI: Nykyisen syötetiedoston tiedostonimi.
  • RS: Tietueiden erotin. AWK: n luonteen vuoksi se käsittelee tietoja yksi tietue kerrallaan. Tässä muuttuja määrittää erottimen, jota käytetään tietovirran jakamiseen tietueiksi. Oletusarvoisesti tämä arvo on uuden rivin merkki.
  • NR: Nykyinen syötetietueen numero. Jos RS-arvo on asetettu oletusarvoksi, tämä arvo osoittaa nykyisen syöttörivin numeron.
  • FS / OFS: Kentän erottimena käytetyt merkit. Luettuaan AWK jakaa tietueen eri kenttiin. Rajoitin määritetään FS: n arvolla. Tulostettaessa AWK liittyy uudelleen kaikkiin kenttiin. Kuitenkin tällä hetkellä AWK käyttää OFS-erotinta FS-erottimen sijaan. Yleensä sekä FS että OFS ovat samat, mutta ei pakollisia.
  • NF: Nykyisen tietueen kenttien määrä. Jos käytetään oletusarvoa "välilyönti", se vastaa nykyisen tietueen sanamäärää.
  • ORS: Lähtödatan tietueiden erotin. Oletusarvo on uuden rivin merkki.

Tarkistetaan ne toiminnassa. Seuraava komento käyttää NR-muuttujaa tulostaaksesi rivin 2 riville 4 näytteestä.txt. AWK tukee myös loogisia operaattoreita, kuten loogista ja (&&).

$ awk 'NR> 1 && NR < 5' sample.txt

Jos haluat määrittää tietyn arvon AWK-muuttujalle, käytä seuraavaa rakennetta.

$ awk '// ; ; ' =,

Esimerkiksi, jos haluat poistaa kaikki tyhjät rivit syötetiedostosta, muuta RS: n arvo käytännössä olemattomaksi. Se on temppu, joka käyttää hämärää POSIX-sääntöä. Siinä määritetään, että jos RS: n arvo on tyhjä merkkijono, tietueet erotetaan sekvenssillä, joka koostuu uudesta rivistä, jossa on yksi tai useampi tyhjä rivi. POSIXissa tyhjä rivi ilman sisältöä on täysin tyhjä. Jos rivi kuitenkin sisältää välilyöntejä, sitä ei pidetä tyhjänä.

$ awk 'print' RS = "näyte.txt

Lisäresurssit

AWK on tehokas työkalu, jolla on paljon ominaisuuksia. Vaikka tämä opas kattaa monet niistä, se on silti vain perusasiat. AWK: n hallinta vie muutakin kuin vain tämän. Tämän oppaan tulisi olla mukava johdanto työkaluun.

Jos haluat todella hallita työkalua, tässä on joitain lisäresursseja, jotka kannattaa tarkistaa.

  • Leikkaa tyhjää tilaa
  • Ehdollisen lauseen käyttäminen
  • Tulosta sarakealue
  • Regex AWK: n kanssa
  • 20 esimerkkiä AWK: sta

Internet on melko hyvä paikka oppia jotain. AWK-perusteista on paljon mahtavia opetusohjelmia erittäin edistyneille käyttäjille.

Viimeinen ajatus

Toivottavasti tämä opas auttoi antamaan hyvän käsityksen AWK: n perusteista. Vaikka se voi viedä jonkin aikaa, AWK: n hallinta on erittäin palkitsevaa sen antaman voiman suhteen.

Hyvää tietojenkäsittelyä!

Mouse left-click button not working on Windows 10
If you are using a dedicated mouse with your laptop, or desktop computer but the mouse left-click button is not working on Windows 10/8/7 for some rea...
Cursor jumps or moves randomly while typing in Windows 10
If you find that your mouse cursor jumps or moves on its own, automatically, randomly while typing in Windows laptop or computer, then some of these s...
How to reverse Mouse and Touchpads scrolling direction in Windows 10
Mouse and Touchpads not only make computing easy but more efficient and less time-consuming. We cannot imagine a life without these devices, but still...