Awk

Merkkijonotiedoston jakaminen Awk lla

Merkkijonotiedoston jakaminen Awk lla
Linux awk -komento (lyhennetty kehittäjien nimistä; Aho, Weinberger ja Kernighan) on loistava tapa käsitellä ja analysoida merkkijonotiedostoa. Jotta tiedostot olisivat informatiivisempia, ne on järjestettävä riveiksi ja sarakkeiksi. Sitten voit käyttää awk-tiedostoa näissä tiedostoissa:

Tässä artikkelissa selitämme awk-komennon peruskäytön ja miten sitä voidaan käyttää merkkijonotiedoston jakamiseen. Olemme esittäneet tämän artikkelin esimerkkejä Debian 10 Buster -järjestelmässä, mutta ne voidaan helposti kopioida useimmissa Linux-distroissa.

Käytettävä esimerkkitiedosto

Merkkijonotiedosto, jota käytämme osoittamaan awk-komennon käytön, on seuraava:

Tämän näytetiedoston kukin sarake osoittaa:

Esimerkki 1: Käytä Awk-näppäintä tiedoston kaikkien rivien tulostamiseen

Määritetyn tiedoston jokaisen rivin tulostaminen on awk-komennon oletuskäyttäytyminen. Seuraavassa awk-komennon syntaksissa emme määritä mitään mallia, jonka awk pitäisi tulostaa, joten komennon on tarkoitus soveltaa "tulosta" -toimintoa tiedoston kaikkiin riveihin.

Syntaksi:

$ awk 'print' tiedostonimi.txt

Esimerkki:

Tässä esimerkissä käsken awk-komentoa tulostamaan näytetiedostoni sisältö rivi riviltä.

$ awk 'print' näyte_tiedosto.txt

Esimerkki 2: Käytä awk-painiketta tulostaaksesi vain tietyn mallin mukaiset viivat

Awk: llä voit määrittää kuvion ja komento tulostaa vain kyseistä mallia vastaavat rivit.

Syntaksi:

$ awk '/ pattern_to_be_matched / print' tiedostonimi.txt

Esimerkki:

Jos haluan tulostaa näytetiedostosta vain muuttujan 'B' sisältävät rivit, voin käyttää seuraavaa komentoa:

$ awk '/ B / print' näyte_tiedosto.txt

Jotta esimerkki olisi mielekäs, anna minun tulostaa vain professoreita koskevat tiedot.

$ awk '/ professor / print' näyte_tiedosto.txt

Komento tulostaa vain rivit / merkinnät, jotka sisältävät merkkijonon "professori", joten meillä on arvosta enemmän tietoa.

Esimerkki 3. Käytä tiedostoa awk jakamaan tiedosto siten, että vain tietyt kentät / sarakkeet tulostetaan

Koko tiedoston tulostamisen sijaan voit tehdä awk: n tulostamaan vain tietyt tiedoston sarakkeet. Awk käsittelee kaikkia rivillä sanoja, erotettu välilyönneillä, oletusarvoisesti saraketietueena. Se tallentaa tietueen $ N -muuttujaan. Jos $ 1 edustaa ensimmäistä sanaa, $ 2 tallentaa toisen sanan, $ 3 neljännen ja niin edelleen. $ 0 tallentaa koko rivin, joten kuka rivi tulostetaan, kuten esimerkissä 1 selitetään.

Syntaksi:

$ awk 'tulosta $ N,… .' Tiedoston nimi.txt

Esimerkki:

Seuraava komento tulostaa vain esimerkkitiedostoni ensimmäisen sarakkeen (nimen) ja toisen sarakkeen (aiheen):

$ awk 'print $ 1, $ 2' näyte_tiedosto.txt

Esimerkki 4: Käytä Awk-näppäintä laskeaksesi ja tulostaaksesi linjojen määrän, joihin kuvio vastaa

Voit kertoa awk: lle laskemaan rivien lukumäärä, joissa määritetty kuvio sovitetaan, ja antamaan sitten `` count ''.

Syntaksi:

$ awk '/ pattern_to_be_matched / ++ cnt END tulosta "Count =", cnt'
Tiedoston nimi.txt

Esimerkki:

Tässä esimerkissä haluan laskea niiden henkilöiden määrän, jotka opettavat aihetta "englanti". Siksi sanon awk-komennon vastaamaan kuviota "englanti" ja tulostamaan rivien lukumäärä, joissa tämä malli on sovitettu.

$ awk '/ english / ++ cnt END tulosta "Count =", cnt' näyte_tiedosto.txt

Laskenta viittaa siihen, että 2 henkilöä opettaa englantia näytetiedostotiedoista.

Esimerkki 5: Käytä awk-näppäintä tulostaaksesi vain rivit, joissa on enemmän kuin tietty määrä merkkejä

Tässä tehtävässä käytämme sisäänrakennettua awk-toimintoa nimeltä "pituus". Tämä toiminto palauttaa syötemerkkijonon pituuden. Jos siis haluamme, että awk tulostaa vain merkkejä enemmän tai jopa vähemmän merkkejä, voimme käyttää pituusfunktiota seuraavalla tavalla:

Jos haluat tulostaa viivoja, joiden merkit ovat suurempia kuin numero:

$ awk 'length ($ 0)> n' tiedostonimi.txt

Jos haluat tulostaa viivoja, joiden merkit ovat pienempiä kuin numero:

$ awk 'pituus ($ 0) < n' filename.txt

Missä n on riville määritettävien merkkien määrä.

Esimerkki:

Seuraava komento tulostaa vain rivit näytetiedostostani, joissa on yli 30 merkkiä:

$ awk 'pituus ($ 0)> 30' näyte_tiedosto.txt

Esimerkki 6: Käytä komentoa awk tallentaaksesi komentotuloksen toiseen tiedostoon

Käyttämällä uudelleenohjausoperaattoria '>', voit käyttää awk-komentoa tulostaaksesi lähdön toiseen tiedostoon. Näin voit käyttää sitä:

$ awk 'terms_to_print "tiedostonimi.txt> outputfile.txt

Esimerkki:

Tässä esimerkissä käytän uudelleenohjausoperaattoria awk-komennolla vain työntekijöiden nimien (sarake 1) tulostamiseen uuteen tiedostoon:

$ awk 'print $ 1' näyte_tiedosto.txt> työntekijän_nimet.txt

Vahvistin kissakomennoilla, että uusi tiedosto sisältää vain työntekijöiden nimet.

Esimerkki 7: Käytä awk-näppäintä tulostaaksesi tiedostosta vain ei-tyhjät rivit

Awkissa on joitain sisäänrakennettuja komentoja, joiden avulla voit suodattaa lähdön. Esimerkiksi NF-komentoa käytetään pitämään kenttien lukumäärä nykyisessä syötetietueessa. Tällöin NF-komennolla tulostetaan vain tiedoston tyhjät rivit:

$ awk 'NF> 0' näyte_tiedosto.txt

Voit tietysti käyttää seuraavaa komentoa tyhjien rivien tulostamiseen:

$ awk 'NF < 0' sample_file.txt

Esimerkki 8: Käytä tiedostoa awk laskeaksesi rivien kokonaismäärä tiedostossa

Toinen sisäänrakennettu toiminto, jota kutsutaan NR: ksi, laskee tietyn tiedoston syötetietueiden (yleensä rivien) määrän. Voit käyttää tätä toimintoa awk-tiedostossa seuraavasti laskeaksesi rivien määrän tiedostossa:

$ awk 'END tulosta NR' näyte_tiedosto.txt

Nämä olivat perustiedot, jotka sinun on aloitettava tiedostojen jakamisesta awk-komennolla. Voit hakea näiden esimerkkien yhdistelmällä merkityksellistä tietoa merkkijonotiedostostasi awk: n kautta.

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