Poznavanje osnov ukaza "awk" je zelo pomembno pri učinkoviti obdelavi podatkov in ta prispevek zajema ključne značilnosti ukaza "awk". Najprej preverimo skladnjo:
$ awk [možnosti] [datoteka]Nekatere najpogosteje uporabljene možnosti so navedene v spodnji tabeli:
Možnost | Opis |
-F | Če želite določiti ločilo datotek |
-f | Navedite datoteko, ki vsebuje skript »awk« |
-v | Če želite dodeliti spremenljivko |
Oglejmo si nekaj primerov uporabe ukaza "awk", za predstavitev pa sem naredil besedilno datoteko z imenom testFile.txt:
1. Kako natisniti stolpec datoteke z ukazom awk?
Z ukazom "awk" lahko dobite določen stolpec besedilne datoteke. Za tiskanje vsebine datoteke uporabite:
$ cat testFile.txt
Zdaj za tiskanje drugega stolpca datoteke uporabite:
$ awk 'print $ 2' testFile.txt
Če želite natisniti več polj, uporabite ukaz:
$ awk 'print $ 1, $ 2, $ 3' testFile.txt
Če ne uporabite vejice “,”, bo rezultat brez presledkov:
$ awk 'print $ 1 $ 2 $ 3' testFile.txt
2. Kako uporabiti regularni izraz z ukazom awk:
Za ujemanje nizov ali katerega koli izraza na primer uporabljamo poševnice "//", če želimo natisniti imena ljudi, ki preučujejo "Zgodovino", potem uporabite:
$ awk '/ History / print $ 2' testFile.txt
Rezultat jasno kaže, da samo "Sam" in "Tommy" študirata tečaj "Zgodovina".
3. Kako uporabiti relacijski izraz z ukazom "awk":
Za ujemanje z vsebino določenega polja lahko uporabimo relacijski izraz. Če želite ujemati poljuben niz ali izraz s poljem, navedite polje in uporabite operator primerjave »~« z vzorcem, kot je predstavljen v naslednjem ukazu:
$ awk '$ 3 ~ / is / print $ 2' testFile.txt
Zgornji izhod prikazuje vsako polje v stolpcu 2 proti vsakemu polju, ki vsebuje "je" v stolpcu 3.
Če želite dobiti nasprotni izhod zgornjega ukaza, uporabite "! ~ ”Operater:
$ awk '$ 3! ~ / is / print $ 2 'testFile.txt
Za primerjavo lahko uporabimo tudi operatorje, kot so večji od “>” in manjši od “<” and equal “=” as well:
$ awk '$ 4> 70 print $ 2' testFile.txt
V prispevku so bila natisnjena imena ljudi, ki so dobili ocene več kot 70.
4. Kako uporabiti vzorec obsega z ukazom awk:
Za iskanje je mogoče uporabiti tudi obseg; preprosto uporabite vejico “,”, da ločite obseg, kot je predstavljen v spodnjem ukazu:
$ awk '/ Joel /, / Marlene / print $ 3' testFile.txt
Rezultat prikazuje subjekte v razponu od "Joel" do "Marlene" iz stolpca 2. Za določitev obsega lahko uporabimo dvojni enak znak "=="; glej spodnji primer:
$ awk '$ 4 == 80, $ 4 == 90 print $ 0' testFile.txt
V rezultatu so prikazana imena oseb iz stolpca 2 za obseg oznak »70 do 80« iz stolpca 4.
5. Kako združiti vzorec z uporabo logičnega operatorja:
Uporaba logičnih operatorjev, kot sta ALI “||,” IN “&&”, vam omogoča kombiniranje vzorcev za iskanje. Uporabite naslednji ukaz
$ awk '$ 4> 80 && $ 6> 0.4 print $ 2 'testFile.txt
Zgornji ukaz natisne imena ljudi na četrto polje, ki je pomembnejše od 80, in na šesto polje večje od 0.4. In samo dva zapisa izpolnjujeta pogoj.
6. Posebni izrazi ukaza awk:
Obstajata dva posebna izraza, "ZAČETI"In"KONEC":
BEGIN: Za izvedbo dejanja pred obdelavo podatkov
END: za izvedbo dejanja po obdelavi podatkov
$ awk 'BEGIN natisni “Obdelava se je začela”; natisni $ 2; END print «Obdelava se je končala» 'testFile.txt
7. Uporabna vgrajena spremenljivka ukaza awk:
Ukaz awk ima različne spremenljivke, ki pomagajo pri obdelavi podatkov:
Spremenljiv | Opis |
NF | Podaja število polj v podatkih |
NR | Podaja številko trenutnega zapisa |
IME DATOTEKE | Prikaže ime datoteke, ki je trenutno v obdelavi |
FS in OFS | Ločilo polja in izhodno ločilo polja |
RS in ORS | Loči ločilo zapisov in izhodnih zapisov |
Na primer:
$ awk 'END print "Ime datoteke je" FILENAME "vsebuje" NF "polja in" NR "evidence"' testFile.txt
Uporabljamo »END«, če pa uporabljamo »BEGIN«, bo rezultat dal 0 polj in 0 zapisov.
8. Kako spremeniti ločilo zapisov:
Privzeto ločilo v zapisu je običajno presledek; če je vejica “,” ali pika “."Kot ločilo polj, nato skupaj z ločevalnikom uporabite možnost" FS ".
Dajmo še eno datoteko, kjer so podatkovna polja ločena z vejico dvopičjem “:”:
$ cat testFile2.txt$ awk 'BEGIN FS = “:” print $ 2' testFile2.txt
Ker je ločilo datoteke dvopičje, vendar je ukaz "awk" celo koristen za take datoteke, preprosto uporabite možnost "FS".
Uporabite lahko tudi "-F":
$ awk -F “:” 'print $ 2' testFile2.txt
Privzeto ločilo zapisov je »nova vrstica« in če želite ločilo zapisov nastaviti na »:«, uporabite:
$ awk 'BEGIN RS = “:” print $ 1' testFile2.txt
9. Awk akcije:
Dejanja Awk so majhni programi, ki so obdani z oklepaji »« in imajo več kot en stavek, ločen s podpičji »;«.
Najpogosteje uporabljen stavek z ukazom "awk" je stavek "tiskanje". Če želite na primer natisniti besedilo z vsakim zapisom, uporabite besedilni niz v narekovajih:
$ awk '"The is the field," $ 2' testna datoteka.txt
Izvedimo preprosto operacijo seštevanja z uporabo awk:
$ awk 'sum + = $ 4 END printf “% d \ n”, sum' testFile.txt
10. Ustvarjanje programa awk:
Začnimo s programiranjem "awk", spodaj navedeno programiranje preprosto množi:
ZAČETIi = 2
medtem ko (j<4)
natisni "Množenje 2 z" j "je" i * j;
j++
Shranite program z imenom »myCode.awk"In ga zaženite, odprite terminal in vnesite:
$ awk -f myCode.awkZaključek:
Ukaz "awk" je priročen ukaz za obdelavo, pregledovanje podatkov besedilnih datotek, na primer ločevanje katerega koli določenega polja datoteke; uporabljamo ukaz "awk". Omogoča lažje iskanje v poljubni obliki ali vzorcu iz besedilnih datotek. V tem priročniku razumemo osnove ukaza “awk” in njegovo uporabo. Ukaz "awk" preveri podatke, ustvari poročila in celo razčleni datoteke. Uporaba preprostih ukazov "awk" uporabnikom omogoča tudi pisanje drobnih programov za učinkovitejšo obdelavo podatkov.