Naučite kako koristiti ugrađene varijable Awk-a - 10. dio
Dok otkrivamo odjeljak značajki Awk, u ovom dijelu serije, proći ćemo kroz koncept ugrađenih varijabli u Awku. Postoje dvije vrste varijabli koje možete koristiti u Awku, a to su; korisnički definirane varijable, koje smo obradili u 8. dijelu i ugrađene varijable.
Ugrađene varijable imaju vrijednosti već definirane u Awk, ali također možemo pažljivo mijenjati te vrijednosti, ugrađene varijable uključuju:
FILENAME
: trenutni naziv ulazne datoteke (ne mijenjajte naziv varijable)FR
: broj trenutne ulazne linije (to je ulazna linija 1, 2, 3… tako dalje, nemojte mijenjati naziv varijable)NF
: broj polja u trenutnom retku unosa (ne mijenjajte naziv varijable)OFS
: razdjelnik izlaznog poljaFS
: razdjelnik polja za unosORS
: separator izlaznih zapisaRS
: razdjelnik ulaznog zapisa
Nastavimo s ilustracijom upotrebe nekih od gornjih ugrađenih varijabli Awk-a:
Za čitanje naziva trenutne ulazne datoteke, možete koristiti ugrađenu varijablu FILENAME
na sljedeći način:
awk ' { print FILENAME } ' ~/domains.txt
Shvatit ćete da se naziv datoteke ispisuje za svaki redak unosa, što je zadano ponašanje Awk kada koristite FILENAME
ugrađenu varijablu.
Korištenje NR
za brojanje redaka (zapisa) u ulaznoj datoteci, zapamtite to, također broji prazne retke, kao što ćemo vidjeti u primjeru ispod.
Kada pregledavamo datoteku domains.txt pomoću naredbe cat, ona sadrži 14 redaka s tekstom i prazna 2 reda:
cat ~/domains.txt
awk ' END { print "Number of records in file is: ", NR } ' ~/domains.txt
Za brojanje broja polja u zapisu ili retku koristimo ugrađenu varijablu NR na sljedeći način:
cat ~/names.txt
awk '{ print "Record:",NR,"has",NF,"fields" ; }' ~/names.txt
Zatim, također možete navesti razdjelnik polja za unos koristeći FS
ugrađenu varijablu, ona definira kako Awk dijeli retke za unos u polja.
Zadana vrijednost za FS
je space i tab, ali možemo promijeniti vrijednost FS
u bilo koji znak koji uputit će Awk da u skladu s tim podijeli ulazne retke.
Postoje dvije metode za to:
- jedna metoda je korištenje ugrađene varijable FS
- a drugi je pozivanje opcije -F Awk
Razmotrimo datoteku /etc/passwd na Linux sustavu, polja u ovoj datoteci podijeljena su pomoću znaka :
, tako da je možemo navesti kao novi separator polja za unos kada želimo filtrirati određena polja kao u sljedećim primjerima:
Opciju -F
možemo koristiti na sljedeći način:
awk -F':' '{ print $1, $4 ;}' /etc/passwd
Po izboru, također možemo iskoristiti prednosti FS
ugrađene varijable kao što je prikazano u nastavku:
awk ' BEGIN { FS=“:” ; } { print $1, $4 ; } ' /etc/passwd
Da odredite razdjelnik izlaznog polja, upotrijebite ugrađenu varijablu OFS
, ona definira kako će izlazna polja biti odvojena pomoću znaka koji koristimo kao u primjeru ispod:
awk -F':' ' BEGIN { OFS="==>" ;} { print $1, $4 ;}' /etc/passwd
U ovom 10. dijelu, istražili smo ideju korištenja ugrađenih varijabli Awk-a koje dolaze s unaprijed definiranim vrijednostima. Ali također možemo promijeniti ove vrijednosti, iako se to ne preporučuje osim ako ne znate što radite, uz odgovarajuće razumijevanje.
Nakon ovoga, nastavit ćemo s obradom kako možemo koristiti varijable ljuske u operacijama naredbi Awk, stoga ostanite povezani s Tecmintom.