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:

  1. FILENAME : naziv trenutnog ulaznog fajla (ne mijenjajte naziv varijable)
  2. FR : broj trenutnog ulaznog reda (to je ulazni red 1, 2, 3... tako dalje, ne mijenjajte ime varijable)
  3. NF : broj polja u trenutnoj liniji za unos (ne mijenjajte naziv varijable)
  4. OFS : separator izlaznog polja
  5. FS : separator polja za unos
  6. ORS : separator izlaznog zapisa
  7. RS : 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:

  1. jedna metoda je korištenje FS ugrađene varijable
  2. 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.