Poznavanje osnova naredbe "awk" vrlo je važno kada je u pitanju učinkovita obrada podataka, a ovaj članak pokriva ključne značajke naredbe "awk". Prvo provjerimo sintaksu:
$ awk [opcije] [datoteka]Neke od najčešće korištenih opcija date su u donjoj tablici:
Opcija | Opis |
-F | Da biste odredili separator datoteke |
-f | Navedite datoteku koja sadrži skriptu "awk" |
-v | Dodijeliti varijablu |
Pogledajmo nekoliko primjera upotrebe naredbe "awk", a za demonstraciju sam napravio tekstualnu datoteku s imenom testFile.txt:
1. Kako ispisati stupac datoteke naredbom awk?
Naredba "awk" može se koristiti za dobivanje određenog stupca tekstualne datoteke. Za ispis sadržaja datoteke upotrijebite:
$ mačka testFile.txt
Sada, za ispis drugog stupca datoteke, upotrijebite:
$ awk 'print $ 2' testFile.txt
Da biste ispisali više polja, upotrijebite naredbu:
$ awk 'print $ 1, $ 2, $ 3' testFile.txt
Ako ne koristite zarez ",", izlaz će biti bez razmaka:
$ awk 'print $ 1 $ 2 $ 3' testFile.txt
2. Kako koristiti regularni izraz s naredbom awk:
Da bismo podudarali nizove ili bilo koji izraz, koristimo kose crte "//", na primjer, ako želite ispisati imena ljudi koji proučavaju "Povijest", tada upotrijebite:
$ awk '/ Povijest / ispis $ 2' testFile.txt
Rezultat jasno pokazuje da samo "Sam" i "Tommy" proučavaju tečaj "Povijest".
3. Kako se koristi relacijski izraz s naredbom "awk":
Da bi se podudarao sa sadržajem određenog polja, može se koristiti relacijski izraz. Za podudaranje bilo kojeg niza ili izraza s poljem, naznačite polje i upotrijebite operator usporedbe “~” s uzorkom kako je prikazano u sljedećoj naredbi:
$ awk '$ 3 ~ / is / print $ 2' testFile.txt
Gornji izlaz prikazuje svako polje u stupcu 2 u odnosu na svako polje koje sadrži "je" u stupcu 3.
Da biste dobili suprotni izlaz gore navedene naredbe, upotrijebite "! ~ ”Operator:
$ awk '$ 3! ~ / is / print $ 2 'testFile.txt
Za usporedbu, možemo koristiti i operatore veće od “>” i manje od “<” and equal “=” as well:
$ awk '$ 4> 70 print $ 2' testFile.txt
U izdanju su ispisana imena ljudi koji su dobili ocjene više od 70.
4. Kako se koristi obrazac raspona s naredbom awk:
Raspon se također može koristiti za pretraživanje; jednostavno zarezom "," razdvojite raspon kako je prikazano u dolje spomenutoj naredbi:
$ awk '/ Joel /, / Marlene / print $ 3' testFile.txt
Izlaz prikazuje subjekte u rasponu od "Joel" do "Marlene" iz stupca 2. Znak dvostruke jednakosti "==" možemo koristiti za definiranje raspona; pogledajte primjer u nastavku:
$ awk '$ 4 == 80, $ 4 == 90 print $ 0' testFile.txt
Izlaz prikazuje imena ljudi iz stupca 2 za raspon oznaka "70 do 80" iz stupca 4.
5. Kako kombinirati obrazac pomoću logičkog operatora:
Korištenje logičkih operatora poput OR “||,” I “&&” omogućuje vam kombiniranje uzoraka za pretraživanje. Upotrijebite sljedeću naredbu
$ awk '$ 4> 80 && $ 6> 0.4 print $ 2 'testFile.txt
Gornja naredba ispisuje imena ljudi na četvrto polje značajnije od 80 i šesto polje veće od 0.4. I samo dva zapisa ispunjavaju uvjet.
6. Posebni izrazi naredbe awk:
Postoje dva posebna izraza, "POČETI"I"KRAJ”:
POČETAK: Izvršiti radnju prije obrade podataka
END: Za izvođenje radnje nakon obrade podataka
$ awk 'BEGIN ispis “Obrada je započela”; ispis $ 2; END print "Obrada je završena" 'testFile.txt
7. Korisna ugrađena varijabla naredbe awk:
Naredba awk ima razne varijable koje pomažu u obradi podataka:
Promjenjiva | Opis |
NF | Daje broj polja u podacima |
NR | Daje broj trenutnog zapisa |
NAZIV DATOTEKE | Prikazuje ime datoteke koja se trenutno obrađuje |
FS i OFS | Separator polja i izlazni Separator polja |
RS i ORS | Odvaja separator zapisa i izlaznog zapisa |
Na primjer:
$ awk 'END print "Naziv datoteke je" FILENAME "ima" NF "polja i" NR "zapise"' testFile.txt
Koristimo "END", ali ako koristite "BEGIN", izlaz će dati 0 polja i 0 zapisa.
8. Kako promijeniti separator zapisa:
Zadani separator u zapisu obično je razmak; ako postoji zarez "," ili točka "."Kao separator polja, zatim upotrijebite opciju" FS "zajedno s separatorom.
Imajmo još jednu datoteku u kojoj su podatkovna polja odvojena zarezom dvotočke:::
$ mačka testFile2.txt$ awk 'BEGIN FS = “:” print $ 2' testFile2.txt
Budući da je separator datoteke dvotačka, ali naredba "awk" čak korisna za ovakve datoteke, jednostavno upotrijebite opciju "FS".
"-F" se također može koristiti:
$ awk -F “:” 'print $ 2' testFile2.txt
Zadani je separator zapisa "nova linija", a da biste postavili separator zapisa na ":", upotrijebite:
$ awk 'BEGIN RS = “:” print $ 1' testFile2.txt
9. Awk akcije:
Awk akcije su maleni programi koji su okruženi zagradama "" i imaju više od jednog izraza odvojenog zarezom ";".
Najčešće korištena naredba s naredbom "awk" je izjava "ispis". Na primjer, za ispis teksta sa svakim zapisom koristite tekstualni niz u navodnicima:
$ awk '"The is the field", $ 2' testna datoteka.txt
Izvedimo jednostavnu operaciju zbrajanja koristeći awk:
$ awk 'sum + = $ 4 END printf “% d \ n”, sum' testFile.txt
10. Izrada awk programa:
Počnimo s "awk" programiranjem, programirani u nastavku daju množenje:
POČINIi = 2
dok (j<4)
ispisati "Množenje 2 s" j "je" i * j;
j++
Spremite program pod nazivom „myCode.awk"I da biste ga pokrenuli, otvorite terminal i upišite:
$ awk -f myCode.awkZaključak:
Naredba "awk" korisna je naredba za obradu, skeniranje podataka tekstualnih datoteka, poput odvajanja bilo kojeg određenog polja datoteke; koristimo naredbu "awk". Olakšava pretraživanje bilo čega u bilo kojem obliku ili uzorku iz tekstualnih datoteka. U ovom vodiču razumijemo osnove naredbe "awk" i njezinu upotrebu. Naredba "awk" provjerava podatke, generira izvješća, pa čak i raščlanjuje datoteke. Upotreba jednostavnih naredbi "awk" također omogućava korisnicima da napišu male programe za učinkovitiju obradu podataka.