Ärme

Kuidas AWK-d Linuxis kasutada

Kuidas AWK-d Linuxis kasutada

Linuxi pakutavad utiliidid järgivad sageli UNIX-i disainifilosoofiat. Kõik tööriistad peaksid olema väikesed, kasutama sisend- ja väljundtekstide jaoks tavalist teksti ja töötama modulaarselt. Tänu pärandile on meil tööriistade (sed ja awk) abil mõned parimad tekstitöötlusfunktsioonid.

Linuxis on awk-tööriist eelinstallitud kõikidele Linuxi distrodele. AWK ise on programmeerimiskeel. Tööriist AWK on lihtsalt AWK programmeerimiskeele tõlgendaja. Selles juhendis vaadake, kuidas AWK-d Linuxis kasutada.

AWK kasutamine

Tööriist AWK on kõige kasulikum, kui tekstid on korraldatud ennustatavas vormingus. Tabeliandmete parsimisel ja manipuleerimisel on see üsna hea. See töötab rida-realiselt, kogu tekstifailis.

AWK vaikekäitumine on tühikute (tühikud, vahelehed jne) kasutamine.) väljade eraldamiseks. Õnneks järgivad paljud Linuxi konfiguratsioonifailid seda mustrit.

Põhisüntaks

Nii näeb awk käsustruktuur välja.

$ awk '// ; ; '

Käsu osad on üsna iseenesestmõistetavad. Awk saab töötada ilma otsingu või toiminguosata. Kui midagi pole täpsustatud, on matši vaiketoiminguks lihtsalt printimine. Põhimõtteliselt prindib awk kõik failist leitud vasted.

Kui otsingumustrit pole määratud, teeb awk määratud toimingud faili igal real.

Kui mõlemad osad on antud, kasutab awk mustri abil kindlaks, kas praegune joon seda peegeldab. Kui sobitatakse, teeb awk määratud toimingu.

Pange tähele, et awk võib töötada ka ümbersuunatud tekstidega. Seda saab saavutada käskluse sisu juhtimisega awk, et tegutseda. Lisateave Linuxi toru käsu kohta.

Demo eesmärgil on siin näidisfail. See sisaldab 10 rida, 2 sõna rea ​​kohta.

$ kassi proov.txt

Regulaarne väljend

Üks peamisi funktsioone, mis muudavad awk võimsa tööriista, on regulaaravaldise tugi (lühidalt väljend). Tavaväljend on string, mis tähistab teatud tähemärki.

Siin on nimekiri kõige tavalisematest regulaaravaldise süntaksitest. Need regex-süntaksid pole ainult awk-le omased. Need on peaaegu universaalsed regex-süntaksid, nii et nende valdamine aitab ka teistes regulaaravaldisega seotud rakendustes / programmeerimistes.

  • Põhitegelased: Kõik tähtnumbrilised tähemärgid tõmbavad alla (_) jne.
    • Märgistik: asjade lihtsustamiseks on regeksis märgirühmad. Näiteks suurtähed (A-Z), väiketähed (a-z) ja numbrilised numbrid (0–9).
  • Meta-tegelased: Need on tähemärgid, mis selgitavad erinevaid tavamärkide laiendamise viise.
    • Periood (.): Mis tahes märgi vaste positsioonil on kehtiv (välja arvatud uus rida).
    • Tärn (*): Kehtiv on sellele eelnenud vahetu märgi null või mitu eksistentsi.
    • Sulg ([]): Sobivus kehtib juhul, kui asukohas on mõni sulgudes olev tähemärk sobitatud. Seda saab kombineerida tähemärkidega.
    • Märk (^): Matš peab olema joone alguses.
    • Dollar ($): Matš peab olema joone lõpus.
    • Kaldkriips (\): Kui mõnda metamärki tuleb kasutada otseses tähenduses.

Teksti printimine

Kogu tekstifaili sisu printimiseks kasutage käsku print. Otsingumustri puhul pole mustrit määratletud. Niisiis, awk prindib kõik read.

Näide $ awk 'print'.txt

Siin on “print” AWK käsk, mis prindib sisendi sisu.

Stringiotsing

AWK saab antud tekstil teha põhitekstiotsingu. Mustrite jaotises peab see olema tekst, mida leida.

Järgmises käsus otsib awk kõigil failinäidise ridadel teksti „kiire”.txt.

$ awk '/ quick /' proov.txt

Nüüd kasutame otsingu täpsemaks reguleerimiseks mõnda regulaaravaldist. Järgmine käsk prindib kõik read, mille alguses on “pruun”.

$ awk '/ ^ brown /' proov.txt

Kuidas oleks leida midagi rea lõpus? Järgmine käsk prindib kõik read, mille lõpus on kiire.

$ awk '/ kiire $ /' proov.txt

Wild card muster

Järgmine näide tutvustab caret'i kasutamist (.). Siin võib enne märki “e” olla kaks märki.

$ awk '/… e /' proov.txt

Wild card muster (tärniga)

Mis siis, kui asukohas võib olla suvaline arv tähemärke? Kõigi võimalike tähemärkide sobitamiseks kasutage tärn (*). Siin sobitatakse AWK kõigi ridadega, millel on tähemärgi ".

$ awk '/ the * /' proov.txt

Sulgude väljend

Järgmises näites tutvustatakse sulgudes avaldise kasutamist. Sulgude avaldis ütleb, et vaste on asukohas kehtiv, kui see sobib sulgudes suletud märkide komplektiga. Näiteks sobib järgmine käsk “The” ja “Tee” kehtivate vastetena.

$ awk '/ T [he] e /' proov.txt

Regulaaravaldises on mõned eelnevalt määratletud märgistikud. Näiteks on kõigi suurtähtede komplekt tähistatud tähega “A-Z”. Järgmises käsus sobib awk kõigi sõnadega, mis sisaldavad suurtähte.

$ awk '/ [A-Z] /' proov.txt

Heitke pilk järgmisele sulgudes väljendiga märgistiku kasutamisele.

  • [0-9]: tähistab ühte numbrit
  • [a-z]: tähistab ühte väikest tähte
  • [A-Z]: tähistab ühte suurtähte
  • [a-zA-z]: tähistab ühte tähte
  • [a-zA-z 0-9]: tähistab ühte märki või numbrit.

Awk eelnevalt määratletud muutujad

AWK-ga on kaasas hulk eelnevalt määratletud ja automaatseid muutujaid. Need muutujad võivad muuta AWK-ga programmide ja skriptide kirjutamise lihtsamaks.

Siin on mõned levinumad AWK muutujad, millega kokku puutute.

  • FAILI NIMI: Praeguse sisendfaili failinimi.
  • RS: Kirje eraldaja. AWK olemuse tõttu töötleb see andmeid üks kirje korraga. Siin täpsustab see muutuja eraldajat, mida kasutatakse andmevoo kirjeteks jagamiseks. Vaikimisi on see väärtus uue rea märk.
  • NR: Praegune sisendkirje number. Kui RS väärtus on seatud vaikeväärtusele, näitab see väärtus praeguse sisendrea numbrit.
  • FS / OFS: Välja eraldajana kasutatavad tähemärgid. Pärast lugemist jagab AWK kirje erinevateks väljadeks. Piiraja määratakse FS väärtusega. Trükkimisel ühendab AWK kõik väljad uuesti. Kuid praegu kasutab AWK FS-eraldaja asemel OFS-eraldajat. Üldiselt on nii FS kui ka OFS samad, kuid mitte nii kohustuslikud.
  • NF: Praeguse kirje väljade arv. Kui kasutatakse vaikeväärtust „tühik”, vastab see praeguse kirje sõnade arvule.
  • ORS: Väljundandmete kirjete eraldaja. Vaikeväärtus on uue rea märk.

Kontrollime neid tegevuses. Järgmine käsk kasutab muutujat NR, et printida rida 2 reale 4 proovist.txt. AWK toetab ka loogilisi operaatoreid nagu loogiline ja (&&).

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

Konkreetse väärtuse määramiseks AWK muutujale kasutage järgmist struktuuri.

$ awk '// ; ; ' =,

Näiteks kõigi tühjade ridade eemaldamiseks sisendfailist muutke RS väärtus põhimõtteliselt mitte millekski. See on trikk, mis kasutab ebaselget POSIX-reeglit. See täpsustab, et kui RS väärtus on tühi string, siis eraldatakse kirjed järjestusega, mis koosneb uuest reast koos ühe või mitme tühja reaga. POSIXis on tühi sisuta rida täiesti tühi. Kui aga rida sisaldab tühikuid, ei peeta seda tühjaks.

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

Lisaressursid

AWK on võimas tööriist, millel on palju funktsioone. Kuigi see juhend käsitleb paljusid neist, on see siiski ainult põhitõde. AWK valdamine võtab enamat kui lihtsalt seda. See juhend peaks olema kena tööriista tutvustus.

Kui soovite tõesti tööriista omandada, siis siin on mõned täiendavad ressursid, mida peaksite kontrollima.

  • Kärbi tühik
  • Tingimuslauset kasutades
  • Veergude vahemiku printimine
  • Regex koos AWK-ga
  • 20 AWK näidet

Internet on üsna hea koht millegi õppimiseks. Väga edasijõudnutele on palju AWK põhitõdesid sisaldavaid suurepäraseid õpetusi.

Viimane mõte

Loodetavasti aitas see juhend AWK põhitõdedest hästi aru saada. Ehkki see võib võtta aega, on AWK valdamine selle pakutava jõu poolest äärmiselt tasuv.

Head arvutamist!

Kursor hüppab või liigub juhuslikult Windows 10-s kirjutamise ajal
Kui leiate, et hiire kursor hüppab või liigub Windowsi sülearvutisse või arvutisse kirjutades automaatselt, juhuslikult, võivad mõned neist soovituste...
Kuidas muuta hiire ja puuteplaatide kerimise suund Windows 10-s ümber
Hiir ja PuuteplaatNeed muudavad arvutamise mitte ainult lihtsaks, vaid ka tõhusamaks ja vähem aeganõudvaks. Me ei kujuta ette elu ilma nende seadmetet...
Kuidas muuta hiirekursori ja kursori suurust, värvi ja skeemi Windows 10-s
Windows 10 hiirekursor ja kursor on operatsioonisüsteemi väga olulised aspektid. Seda võib öelda ka teiste opsüsteemide kohta, nii et tegelikult pole ...