Mësoni se si të përdorni variablat e integruara Awk - Pjesa 10


Ndërsa zbulojmë seksionin e veçorive të Awk, në këtë pjesë të serisë, ne do të shqyrtojmë konceptin e ndryshoreve të integruara në Awk. Ekzistojnë dy lloje të variablave që mund të përdorni në Awk, këto janë; variablat e përcaktuara nga përdoruesi, të cilat i mbuluam në Pjesën 8 dhe variablat e integruar.

Variablat e integruar kanë vlera të përcaktuara tashmë në Awk, por ne gjithashtu mund t'i ndryshojmë me kujdes ato vlera, variablat e integruar përfshijnë:

  1. FILENAME : emri aktual i skedarit hyrës (mos ndryshoni emrin e ndryshores)
  2. FR : numri i linjës hyrëse aktuale (që është linja hyrëse 1, 2, 3… kështu me radhë, mos e ndryshoni emrin e ndryshores)
  3. NF : numri i fushave në linjën aktuale të hyrjes (mos ndryshoni emrin e ndryshores)
  4. OFS : ndarës i fushës së daljes
  5. FS : ndarës i fushës së hyrjes
  6. ORS : ndarës i të dhënave të daljes
  7. RS : ndarës i të dhënave të hyrjes

Le të vazhdojmë të ilustrojmë përdorimin e disa prej variablave të integruar të Awk më sipër:

Për të lexuar emrin e skedarit të skedarit aktual të hyrjes, mund të përdorni ndryshoren e integruar FILENAME si më poshtë:

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

Ju do të kuptoni se emri i skedarit printohet për secilën rresht hyrës, kjo është sjellja e parazgjedhur e Awk kur përdorni ndryshoren e integruar FILENAME.

Duke përdorur NR për të numëruar numrin e rreshtave (regjistrave) në një skedar hyrës, mbani mend se ai numëron gjithashtu linjat boshe, siç do të shohim në shembullin më poshtë.

Kur shohim skedarin domains.txt duke përdorur komandën cat, ai përmban 14 rreshta me tekst dhe 2 rreshta bosh:

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

Për të numëruar numrin e fushave në një rekord ose rresht, ne përdorim variablin e integruar NR si më poshtë:

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

Më pas, mund të specifikoni gjithashtu një ndarës të fushës hyrëse duke përdorur variablin e integruar FS, ai përcakton se si Awk ndan linjat hyrëse në fusha.

Vlera e paracaktuar për FS është hapësira dhe skeda, por ne mund ta ndryshojmë vlerën e FS në çdo karakter që do të udhëzojë Awk të ndajë linjat hyrëse në përputhje me rrethanat.

Ka dy mënyra për ta bërë këtë:

  1. një metodë është përdorimi i ndryshores së integruar FS
  2. dhe e dyta është thirrja e opsionit -F Awk

Konsideroni skedarin /etc/passwd në një sistem Linux, fushat në këtë skedar ndahen duke përdorur karakterin :, kështu që ne mund ta specifikojmë atë si ndarësin e ri të fushës hyrëse kur duam të filtrojmë fusha të caktuara. si në shembujt e mëposhtëm:

Mund të përdorim opsionin -F si më poshtë:

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

Opsionale, ne gjithashtu mund të përfitojmë nga ndryshorja e integruar FS si më poshtë:

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

Për të specifikuar një ndarës të fushës së daljes, përdorni ndryshoren e integruar OFS, ajo përcakton se si do të ndahen fushat e daljes duke përdorur karakterin që përdorim si në shembullin më poshtë:

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

Në këtë Pjesë 10, ne kemi eksploruar idenë e përdorimit të ndryshoreve të integruara Awk të cilat vijnë me vlera të paracaktuara. Por ne gjithashtu mund t'i ndryshojmë këto vlera, megjithatë, nuk rekomandohet ta bëjmë këtë nëse nuk e dini se çfarë po bëni, me mirëkuptim adekuat.

Pas kësaj, ne do të përparojmë për të mbuluar se si mund të përdorim variablat e guaskës në operacionet e komandës Awk, prandaj, qëndroni të lidhur me Tecmint.