Jifunze Jinsi ya Kutumia Vigeu Vilivyojengwa Ndani vya Awk - Sehemu ya 10


Tunapofichua sehemu ya vipengele vya Awk, katika sehemu hii ya mfululizo, tutapitia dhana ya viambajengo vilivyojengewa ndani katika Awk. Kuna aina mbili za vigeu unaweza kutumia katika Awk, hizi ni; vigezo vilivyobainishwa na mtumiaji, ambavyo tulishughulikia katika Sehemu ya 8 na vigeu vilivyojumuishwa.

Vigezo vilivyojengwa ndani vina maadili tayari yamefafanuliwa katika Awk, lakini tunaweza pia kubadilisha kwa uangalifu maadili hayo, vijiti vilivyojumuishwa ni pamoja na:

  1. FILENAME : jina la faili ya ingizo la sasa( usibadilishe jina badilifu)
  2. FR : nambari ya mstari wa sasa wa ingizo (hiyo ni laini ya 1, 2, 3… kadhalika, usibadilishe jina la kutofautisha)
  3. NF : idadi ya sehemu katika mstari wa sasa wa ingizo (usibadilishe jina badilifu)
  4. OFS : kitenganishi cha sehemu ya pato
  5. FS : kitenganisha sehemu ya ingizo
  6. ORS : kitenganishi cha rekodi za towe
  7. RS : kitenganishi cha rekodi ya ingizo

Wacha tuendelee kuonyesha utumiaji wa anuwai za Awk zilizojengwa hapo juu:

Ili kusoma jina la faili la faili ya sasa ya ingizo, unaweza kutumia FILENAME kigezo kilichojengewa ndani kama ifuatavyo:

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

Utagundua kuwa, jina la faili limechapishwa kwa kila laini ya ingizo, hiyo ndiyo tabia chaguo-msingi ya Awk unapotumia FILENAME kigezo kilichojengewa ndani.

Kwa kutumia NR kuhesabu idadi ya mistari (rekodi) katika faili ya ingizo, kumbuka kwamba, pia huhesabu mistari tupu, kama tutakavyoona katika mfano hapa chini.

Tunapotazama faili domains.txt kwa kutumia paka amri, ina mistari 14 yenye maandishi na mistari 2 tupu:

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

Ili kuhesabu idadi ya sehemu kwenye rekodi au mstari, tunatumia kigezo cha ndani cha NR kama ifuatavyo:

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

Ifuatayo, unaweza pia kubainisha kitenganishi cha sehemu ya ingizo kwa kutumia FS kibadilishi kilichojengewa ndani, kinafafanua jinsi Awk inavyogawanya mistari ya ingizo katika sehemu.

Thamani chaguo-msingi ya FS ni nafasi na kichupo, lakini tunaweza kubadilisha thamani ya FS kwa herufi yoyote ambayo itaelekeza Awk kugawanya mistari ya ingizo ipasavyo.

Kuna njia mbili za kufanya hivi:

  1. njia moja ni kutumia kigezo kilichojengewa ndani cha FS
  2. na ya pili ni kutumia chaguo la -F Awk

Zingatia faili /etc/passwd kwenye mfumo wa Linux, sehemu katika faili hii zimegawanywa kwa kutumia : herufi, kwa hivyo tunaweza kuibainisha kama kitenganishi kipya cha sehemu ya ingizo tunapotaka kuchuja sehemu fulani. kama katika mifano ifuatayo:

Tunaweza kutumia chaguo la -F kama ifuatavyo:

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

Kwa hiari, tunaweza pia kuchukua fursa ya FS tofauti iliyojengewa ndani kama ilivyo hapo chini:

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

Ili kubainisha kitenganishi cha sehemu ya pato, tumia OFS kibadilishi kilichojengewa ndani, kinafafanua jinsi sehemu za pato zitakavyotenganishwa kwa kutumia herufi tunayotumia kama katika mfano ulio hapa chini:

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

Katika Sehemu hii ya 10, tumechunguza wazo la kutumia viambajengo vilivyojengewa ndani vya Awk ambavyo huja na thamani zilizobainishwa awali. Lakini pia tunaweza kubadilisha maadili haya, ingawa, haipendekezwi kufanya hivyo isipokuwa kama unajua unachofanya, kwa uelewa wa kutosha.

Baada ya haya, tutaendelea kufunika jinsi tunavyoweza kutumia vijiti vya ganda katika shughuli za amri ya Awk, kwa hivyo, endelea kushikamana na Tecmint.