Vaadake, kuidas kasutada Awki sisseehitatud muutujaid - 10. osa


Awki funktsioonide sektsiooni avastamisel uurime seeria selles osas Awki sisseehitatud muutujate kontseptsiooni. Awkis saab kasutada kahte tüüpi muutujaid, need on; kasutaja määratletud muutujad, mida käsitlesime 8. osas, ja sisseehitatud muutujad.

Sisseehitatud muutujatel on Awkis juba määratletud väärtused, kuid saame neid väärtusi ka hoolikalt muuta, sisseehitatud muutujate hulka kuuluvad:

  1. FILENAME : sisendfaili praegune nimi (ärge muutke muutuja nime)
  2. FR : praeguse sisendrea number (st sisendrida 1, 2, 3 jne., ärge muutke muutuja nime)
  3. NF : väljade arv praegusel sisereal (muutuja nime ei muuda)
  4. OFS : väljundvälja eraldaja
  5. FS : sisendvälja eraldaja
  6. ORS : väljundkirjete eraldaja
  7. RS : sisendkirjete eraldaja

Jätkame mõne ülaltoodud Awki sisseehitatud muutuja kasutamise illustreerimist:

Praeguse sisendfaili failinime lugemiseks võite kasutada sisseehitatud muutujat FILENAME järgmiselt:

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

Mõistate, et failinimi prinditakse iga sisendrea jaoks välja, see on Awki vaikekäitumine, kui kasutate sisseehitatud muutujat FILENAME .

Kasutades sisendfailis ridade (kirjete) arvu lugemiseks NR , pidage meeles, et see loendab ka tühje ridu, nagu näeme allpool toodud näites.

Kui vaatame faili domains.txt kassi käsu abil, sisaldab see 14 rida teksti ja tühja 2 rida:

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

Kirje või rea väljade arvu lugemiseks kasutame NR sisseehitatud muutujat järgmiselt:

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

Järgmisena saate sisestusvälja eraldaja määrata ka sisseehitatud muutuja FS abil, see määratleb, kuidas Awk sisendjooned väljadeks jagab.

FS vaikeväärtus on tühik ja tabulaator, kuid võime muuta FS väärtuse mis tahes tähemärgiks, mis käsib Awkil sisendridu vastavalt jagada.

Selleks on kaks meetodit:

  1. üks meetod on FS sisseehitatud muutuja kasutamine
  2. ja teine on kasutada valikut -F Awk

Mõelge Linuxi süsteemi failile/etc/passwd, selle faili väljad jagatakse tähemärgiga : , nii et saame selle määrata uue sisendvälja eraldajana, kui tahame teatud väljad välja filtreerida nagu järgmistes näidetes:

Valikut -F saame kasutada järgmiselt:

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

Soovi korral võime ära kasutada ka sisseehitatud muutuja FS järgmiselt:

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

Väljundvälja eraldaja määramiseks kasutage sisseehitatud muutujat OFS , see määratleb, kuidas väljundväljad eraldatakse meie kasutatava märgi abil, nagu allpool toodud näites:

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

Selles 10. osas oleme uurinud ideed kasutada Awki sisseehitatud muutujaid, millel on eelnevalt määratletud väärtused. Kuid me võime ka neid väärtusi muuta, kuigi seda pole soovitatav teha, kui te ei tea, mida teete, piisava mõistmisega.

Pärast seda uurime, kuidas kasutada shellimuutujaid Awki käsutoimingutes, seepärast püsige ühenduses Tecmintiga.