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:

  1. FILENAME : trenutni naziv ulazne datoteke (ne mijenjajte naziv varijable)
  2. FR : broj trenutne ulazne linije (to je ulazna linija 1, 2, 3… tako dalje, nemojte mijenjati naziv varijable)
  3. NF : broj polja u trenutnom retku unosa (ne mijenjajte naziv varijable)
  4. OFS : razdjelnik izlaznog polja
  5. FS : razdjelnik polja za unos
  6. ORS : separator izlaznih zapisa
  7. RS : 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:

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