Norint efektyviai apdoroti duomenis, labai svarbu žinoti „awk“ komandos pagrindus, o šiame įraše pateikiamos pagrindinės „awk“ komandos ypatybės. Pirmiausia patikrinkime sintaksę:
$ awk [parinktys] [failas]Kai kurios dažniausiai naudojamos parinktys pateikiamos toliau pateiktoje lentelėje:
Variantas | apibūdinimas |
-F | Norėdami nurodyti failų skyriklį |
-f | Nurodykite failą, kuriame yra scenarijus „awk“ |
-v | Priskirti kintamąjį |
Pažvelkime į keletą pavyzdžių apie komandos „awk“ naudojimą, o demonstravimui aš sukūriau tekstinį failą pavadinimu testFile.txt:
1. Kaip atsispausdinti failo stulpelį su komanda awk?
Komandą „awk“ galima naudoti norint gauti konkretų teksto failo stulpelį. Norėdami atsispausdinti failo turinį, naudokite:
$ cat testFile.txt
Dabar, norėdami atsispausdinti antrąjį failo stulpelį, naudokite:
$ awk 'print $ 2' testFile.txt
Norėdami atsispausdinti daugiau nei vieną lauką, naudokite komandą:
$ awk 'print $ 1, $ 2, $ 3' testFile.txt
Jei nenaudosite kablelio „“, išvestis bus be tarpų:
$ awk 'print $ 1 $ 2 $ 3' testFile.txt
2. Kaip naudoti reguliariąją išraišką su awk komanda:
Norėdami suderinti eilutes ar bet kurią išraišką, mes naudojame pasviruosius brūkšnelius „//“, pavyzdžiui, jei norite atspausdinti „Istoriją“ studijuojančių žmonių vardus, tada naudokite:
$ awk '/ History / print $ 2' testFile.txt
Rezultatas aiškiai rodo, kad tik „Sam“ ir „Tommy“ studijuoja „Istorijos“ kursą.
3. Kaip naudoti reliacinę išraišką su komanda „awk“:
Norėdami suderinti konkretaus lauko turinį, gali būti naudojama reliacinė išraiška. Norėdami suderinti bet kokią eilutę ar išraišką su lauku, nurodykite lauką ir naudokite palyginimo operatorių „~“ su šablonu, kaip nurodyta šioje komandoje:
$ awk '$ 3 ~ / is / print $ 2' testFile.txt
Aukščiau pateiktas išvestis, rodanti kiekvieną 2 stulpelio lauką, prieš kiekvieną lauką, kuriame 3 stulpelyje yra „is“.
Norėdami gauti priešingą minėtos komandos išvestį, naudokite! ~ “Operatorius:
$ awk '$ 3! ~ / is / print $ 2 'testFile.txt
Palyginimui taip pat galime naudoti tokius operatorius kaip didesni nei „>“ ir mažiau nei „<” and equal “=” as well:
$ awk '$ 4> 70 print $ 2' testFile.txt
Išvestyje atspausdinti žmonių, kurie gavo daugiau nei 70 pažymių, vardai.
4. Kaip naudoti diapazono modelį su komanda awk:
Diapazonas taip pat gali būti naudojamas paieškai; tiesiog naudokite kablelį „,“ norėdami atskirti diapazoną, kaip nurodyta toliau nurodytoje komandoje:
$ awk '/ Joel /, / Marlene / print $ 3' testFile.txt
Išvestyje rodomi diapazono objektai nuo „Joel“ iki „Marlene“ iš 2 stulpelio. Diapazonui apibrėžti galime naudoti dvigubą lygybės ženklą „==“; žr. toliau pateiktą pavyzdį:
$ awk '$ 4 == 80, $ 4 == 90 print $ 0' testFile.txt
Išvestyje rodomi žmonių vardai iš 2 stulpelio ženklų diapazone „70–80“ iš 4 stulpelio.
5. Kaip sujungti modelį naudojant loginį operatorių:
Naudojant loginius operatorius, pvz., OR „||“, „AND“ ir „&& “, galima derinti paieškos šablonus. Naudokite šią komandą
$ awk '$ 4> 80 && $ 6> 0.4 print $ 2 'testFile.txt
Pirmiau nurodyta komanda atsispausdina žmonių vardus prieš ketvirtąjį lauką, reikšmingesnį nei 80, o šeštąjį - didesnį nei 0.4. Sąlygą atitinka tik du įrašai.
6. Specialios „awk“ komandos išraiškos:
Yra du specialūs posakiai:PRADŽIA“Ir„GALAS“:
PRADŽIA: atlikti veiksmus prieš apdorojant duomenis
PABAIGA: Atlikti veiksmą apdorojus duomenis
$ awk 'BEGIN print „Apdorojimas prasidėjo“; spausdinti $ 2; END print „Apdorojimas baigėsi“ 'testFile.txt
7. Naudingas įmontuotas awk komandos kintamasis:
Komandoje awk yra įvairių kintamųjų, kurie padeda apdoroti duomenis:
Kintamasis | apibūdinimas |
NF | Tai nurodo duomenų laukų skaičių |
NR | Tai nurodo dabartinio įrašo numerį |
FAILO PAVADINIMAS | Parodo šiuo metu apdorojamo failo pavadinimą |
FS ir OFS | Lauko skyriklis ir išvesties lauko skyriklis |
RS ir ORS | Atskiria įrašų ir išvesties įrašų separatorių |
Pavyzdžiui:
$ awk 'END print "Failo pavadinimas" FILENAME "turi" NF "laukus ir" NR "įrašai"' testFile.txt
Mes naudojame „END“, bet jei naudojate „BEGIN“, išvestis duos 0 laukų ir 0 įrašų.
8. Kaip pakeisti įrašų skyriklį:
Numatytasis įrašo skyriklis paprastai yra tarpas; jei yra kablelis „,“ arba taškas „.“, Kaip lauko skyriklį, tada naudokite parinktį„ FS “kartu su separatoriumi.
Turėkime kitą failą, kuriame duomenų laukai yra atskirti kableliais „:“:
$ cat testFile2.txt$ awk 'BEGIN FS = “:” print $ 2' testFile2.txt
Kadangi failo skyriklis yra dvitaškis, tačiau komanda „awk“ netgi naudinga tokiems failams, tiesiog naudokite parinktį „FS“.
Taip pat galima naudoti „-F“:
$ awk -F „:“ „print $ 2“ testFile2.txt
Numatytasis įrašų skyriklis yra „newline“, o norėdami nustatyti įrašų skyriklį į „:“, naudokite:
$ awk 'BEGIN RS = “:” print $ 1' testFile2.txt
9. Awk veiksmai:
„Awk“ veiksmai yra mažos programos, kurias supa „“ skliausteliai ir kuriose yra daugiau nei vienas sakinys, atskirtas kabliataškiais „;“.
Labiausiai naudojamas sakinys su komanda „awk“ yra sakinys „print“. Pavyzdžiui, norėdami spausdinti tekstą su kiekvienu įrašu, naudokite teksto eilutę kabutėse:
$ awk '„Tai yra laukas“, „$ 2“ bandomoji rinkmena.txt
Atlikime paprastą sumos operaciją naudodami awk:
$ awk 'sum + = $ 4 END printf „% d \ n“, sum' testFile.txt
10. Programos „awk“ kūrimas:
Pradėkime nuo „awk“ programavimo, žemiau pateiktas programavimas paprasčiausiai daro dauginimą:
PRADĖTIi = 2
o (j<4)
spausdinti „2 padauginimas iš„ j “yra„ i * j;
j++
Išsaugokite programą pavadinimu „„myCode“.awk“Ir norėdami jį paleisti, atidarykite terminalą ir įveskite:
$ awk -f myCode.awkIšvada:
„Awk“ komanda yra patogi komanda apdoroti, nuskaityti tekstinių failų duomenis, pvz., Atskirti bet kurį failo lauką; mes naudojame komandą „awk“. Tai leidžia lengviau ieškoti bet kokios formos ar rašto iš tekstinių failų. Šiame vadove mes suprantame komandos „awk“ ir jos naudojimo pagrindus. „Awk“ komanda patvirtina duomenis, generuoja ataskaitas ir netgi analizuoja failus. Naudodami paprastas komandas „awk“, vartotojai taip pat gali rašyti mažas programas, kad efektyviau apdorotų duomenis.