Naučite se uporabljati vgrajene spremenljivke Awk - 10. del


Ko bomo odkrili odsek funkcij Awk, se bomo v tem delu serije podali skozi koncept vgrajenih spremenljivk v Awk. V programu Awk lahko uporabite dve vrsti spremenljivk, to sta; uporabniško določene spremenljivke, ki smo jih obravnavali v 8. delu in vgrajene spremenljivke.

Vgrajene spremenljivke imajo vrednosti, ki so že določene v programu Awk, vendar jih lahko tudi natančno spremenimo, med vgrajene spremenljivke spadajo:

  1. FILENAME : trenutno ime vhodne datoteke (ne spreminjajte imena spremenljivke)
  2. FR : številka trenutne vnosne vrstice (to je vhodna vrstica 1, 2, 3 ... tako naprej, ne spreminjajte imena spremenljivke)
  3. NF : število polj v trenutni vnosni vrstici (ne spreminjajte imena spremenljivke)
  4. OFS : ločilo izhodnega polja
  5. FS : ločilo vnosnega polja
  6. ORS : ločilo izhodnih zapisov
  7. RS : ločilo vhodnih zapisov

Nadaljujmo s ponazoritvijo uporabe nekaterih vgrajenih spremenljivk Awk zgoraj:

Če želite prebrati ime trenutne vhodne datoteke, lahko uporabite vgrajeno spremenljivko FILENAME , kot sledi:

$ awk ' { print FILENAME } ' ~/domains.txt 

Spoznali boste, da se ime datoteke natisne za vsako vnosno vrstico, kar je privzeto vedenje programa Awk, ko uporabljate vgrajeno spremenljivko FILENAME .

Z uporabo NR za štetje števila vrstic (zapisov) v vhodni datoteki ne pozabite, da šteje tudi prazne vrstice, kot bomo videli v spodnjem primeru.

Ko si z ukazom cat ogledamo datoteko domains.txt, vsebuje 14 vrstic z besedilom in prazni dve vrstici:

$ cat ~/domains.txt
$ awk ' END { print "Number of records in file is: ", NR } ' ~/domains.txt 

Za štetje števila polj v zapisu ali vrstici uporabimo vgrajeno spremenljivko NR, kot sledi:

$ cat ~/names.txt
$ awk '{ print "Record:",NR,"has",NF,"fields" ; }' ~/names.txt

Nato lahko z vgrajeno spremenljivko FS določite ločilo vnosnega polja, ki določa, kako Awk deli vhodne črte na polja.

Privzeta vrednost za FS sta presledek in zavihek, vendar lahko vrednost FS spremenimo v kateri koli znak, ki bo Awku naročil, da ustrezno razdeli vhodne vrstice.

To lahko storite na dva načina:

  1. ena metoda je uporaba vgrajene spremenljivke FS
  2. in drugi je, da prikličete možnost -F Awk

Razmislite o datoteki/etc/passwd v sistemu Linux, polja v tej datoteki so razdeljena z znakom : , zato jo lahko določimo kot novo ločilo vhodnih polj, ko želimo nekatera polja filtrirati kot v naslednjih primerih:

Možnost -F lahko uporabimo na naslednji način:

$ awk -F':' '{ print $1, $4 ;}' /etc/passwd

Po želji lahko izkoristimo tudi vgrajeno spremenljivko FS , kot spodaj:

$ awk ' BEGIN {  FS=“:” ; }  { print $1, $4  ; } ' /etc/passwd

Če želite določiti ločilo izhodnega polja, uporabite vgrajeno spremenljivko OFS , ki določa, kako bodo ločena izhodna polja z uporabo znaka, ki ga uporabljamo kot v spodnjem primeru:

$ awk -F':' ' BEGIN { OFS="==>" ;} { print $1, $4 ;}' /etc/passwd

V tem 10. delu smo raziskali idejo uporabe vgrajenih spremenljivk Awk, ki prihajajo z vnaprej določenimi vrednostmi. Toda te vrednosti lahko tudi spremenimo, vendar tega ni priporočljivo storiti, razen če z ustreznim razumevanjem veste, kaj počnete.

Po tem bomo nadaljevali s tem, kako bomo lahko uporabili spremenljivke lupine v ukaznih operacijah Awk, zato ostajamo povezani s Tecmintom.