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:
FILENAME
: jina la faili ya ingizo la sasa( usibadilishe jina badilifu)FR
: nambari ya mstari wa sasa wa ingizo (hiyo ni laini ya 1, 2, 3… kadhalika, usibadilishe jina la kutofautisha)NF
: idadi ya sehemu katika mstari wa sasa wa ingizo (usibadilishe jina badilifu)OFS
: kitenganishi cha sehemu ya patoFS
: kitenganisha sehemu ya ingizoORS
: kitenganishi cha rekodi za toweRS
: 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:
- njia moja ni kutumia kigezo kilichojengewa ndani cha FS
- 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.