Naučite kako koristiti Awk ugrađene varijable - 10. dio
Dok otkrivamo odjeljak Awk karakteristika, u ovom dijelu serije, proći ćemo kroz koncept ugrađenih varijabli u Awk. Postoje dvije vrste varijabli koje možete koristiti u Awk-u, a to su; korisnički definirane varijable, koje smo pokrili u 8. dijelu i ugrađene varijable.
Ugrađene varijable imaju vrijednosti već definirane u Awk, ali također možemo pažljivo promijeniti te vrijednosti, ugrađene varijable uključuju:
FILENAME
: naziv trenutnog ulaznog fajla (ne mijenjajte naziv varijable)FR
: broj trenutnog ulaznog reda (to je ulazni red 1, 2, 3... tako dalje, ne mijenjajte ime varijable)NF
: broj polja u trenutnoj liniji za unos (ne mijenjajte naziv varijable)OFS
: separator izlaznog poljaFS
: separator polja za unosORS
: separator izlaznog zapisaRS
: separator ulaznog zapisa
Nastavimo da ilustriramo upotrebu nekih od gore navedenih varijabli ugrađenih u Awk:
Da biste pročitali naziv datoteke trenutnog ulaznog fajla, možete koristiti FILENAME
ugrađenu varijablu kako slijedi:
awk ' { print FILENAME } ' ~/domains.txt
Shvatićete da se ime datoteke ispisuje za svaku liniju unosa, što je podrazumevano ponašanje Awk kada koristite FILENAME
ugrađenu varijablu.
Koristeći NR
za brojanje broja redova (zapisa) u ulaznoj datoteci, zapamtite da on takođe broji prazne redove, kao što ćemo vidjeti u primjeru ispod.
Kada pregledamo datoteku domains.txt pomoću cat komande, 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
Da prebrojimo broj polja u zapisu ili redu, 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 specificirati separator polja za unos pomoću ugrađene varijable FS
, koja definira kako Awk dijeli ulazne linije na polja.
Zadana vrijednost za FS
je razmak i tab, ali možemo promijeniti vrijednost FS
u bilo koji znak koji će uputiti Awk da u skladu s tim podijeli ulazne linije.
Postoje dva načina da to uradite:
- jedna metoda je korištenje FS ugrađene varijable
- a drugi je da pozovete opciju -F Awk
Uzmite u obzir datoteku /etc/passwd na Linux sistemu, polja u ovoj datoteci su podijeljena pomoću :
karaktera, tako da možemo odrediti kao novi razdjelnik polja za unos kada želimo filtrirati određena polja kao u sljedećim primjerima:
Možemo koristiti opciju -F
na sljedeći način:
awk -F':' '{ print $1, $4 ;}' /etc/passwd
Opciono, također možemo iskoristiti prednosti ugrađene varijable FS
kao što je dolje:
awk ' BEGIN { FS=“:” ; } { print $1, $4 ; } ' /etc/passwd
Da navedete separator izlaznog polja, koristite ugrađenu varijablu OFS
, ona definira kako će izlazna polja biti razdvojena pomoću karaktera koji koristimo kao u primjeru ispod:
awk -F':' ' BEGIN { OFS="==>" ;} { print $1, $4 ;}' /etc/passwd
U ovom Desetom dijelu, istražili smo ideju korištenja Awk ugrađenih varijabli koje dolaze s unaprijed definiranim vrijednostima. Ali možemo i promijeniti ove vrijednosti, međutim, nije preporučljivo da to činite osim ako ne znate šta radite, uz adekvatno razumijevanje.
Nakon ovoga ćemo napredovati da pokrijemo kako možemo koristiti varijable ljuske u Awk komandnim operacijama, stoga ostanite povezani sa Tecmint.