Jinsi ya Kutumia Awk na Maneno ya Kawaida ili Kuchuja Maandishi au Kamba kwenye Faili
Tunapoendesha amri fulani katika Unix/Linux ili kusoma au kuhariri maandishi kutoka kwa mfuatano au faili, mara nyingi sisi hujaribu kuchuja pato kwa sehemu fulani ya riba. Hapa ndipo kutumia misemo ya kawaida huja kwa manufaa.
Usemi wa kawaida unaweza kufafanuliwa kama mifuatano inayowakilisha mfuatano kadhaa wa wahusika. Moja ya mambo muhimu zaidi kuhusu maneno ya kawaida ni kwamba wanakuwezesha kuchuja pato la amri au faili, kuhariri sehemu ya maandishi au faili ya usanidi na kadhalika.
Maneno ya kawaida hufanywa na:
- Herufi za kawaida kama vile space, underscore(_), A-Z, a-z, 0-9.
- Herufi za Meta ambazo zimepanuliwa hadi herufi za kawaida, ni pamoja na:
(.)
inalingana na herufi yoyote isipokuwa laini mpya.(*)
inalingana na sifuri au uwepo zaidi wa herufi inayoitangulia.[ herufi ]
inalingana na herufi yoyote iliyobainishwa katika(za)bambo, mtu anaweza pia kutumia kistari(-)
kumaanisha safu. ya herufi kama vile[a-f]
,[1-5]
, na kadhalika.^
inalingana na mwanzo wa mstari katika faili.$
inalingana na mwisho wa mstari katika faili.\
ni herufi ya kutoroka.
Ili kuchuja maandishi, mtu lazima atumie zana ya kuchuja maandishi kama vile awk. Unaweza kufikiria awk kama lugha ya programu yake mwenyewe. Lakini kwa upeo wa mwongozo huu wa kutumia awk, tutaifunika kama zana rahisi ya kuchuja mstari wa amri.
Syntax ya jumla ya awk ni:
# awk 'script' filename
Ambapo
script
ni seti ya amri zinazoeleweka na awk na kutekelezwa kwenye faili, jina la faili.Inafanya kazi kwa kusoma mstari uliopewa kwenye faili, hufanya nakala ya mstari na kisha kutekeleza hati kwenye mstari. Hii inarudiwa kwenye mistari yote kwenye faili.
script
iko katika mfumo wa/pattern/ action
ambapo muundo ni usemi wa kawaida na kitendo ndicho awk itafanya inapopata mchoro uliotolewa kwenye mstari.Jinsi ya kutumia Awk Filtering Tool katika Linux
Katika mifano ifuatayo, tutazingatia wahusika wa meta ambao tulijadili hapo juu chini ya sifa za awk.
Mfano hapa chini unachapisha mistari yote kwenye faili /etc/hosts kwani hakuna muundo unaotolewa.
# awk '//{print}'/etc/hosts
Mimi kwa mfano hapa chini, mchoro
localhost
umetolewa, kwa hivyo awk italingana na mstari kuwa na mwenyeji katika/etc/hosts
faili.# awk '/localhost/{print}' /etc/hosts
(.)
italingana na mifuatano iliyo na loc, localhost, localnet katika mfano ulio hapa chini.Hiyo ni kusema * l some_single_character c *.
# awk '/l.c/{print}' /etc/hosts
Italingana na kamba zilizo na localhost, localnet, mistari, yenye uwezo, kama ilivyo kwenye mfano hapa chini:
# awk '/l*c/{print}' /etc/localhost
Pia utagundua kuwa
(*)
inajaribu kupata mechi ndefu zaidi inayoweza kugundua.Hebu tuangalie kesi inayoonyesha hili, chukua usemi wa kawaida
t*t
unaomaanisha mifuatano inayoanza na herufit
na kumalizia nat
katika mstari hapa chini:this is tecmint, where you get the best good tutorials, how to's, guides, tecmint.
Utapata uwezekano ufuatao unapotumia muundo
/t*t/
:this is t this is tecmint this is tecmint, where you get t this is tecmint, where you get the best good t this is tecmint, where you get the best good tutorials, how t this is tecmint, where you get the best good tutorials, how tos, guides, t this is tecmint, where you get the best good tutorials, how tos, guides, tecmint
Na
(*)
katika/t*t/
herufi ya kadi-mwitu inaruhusu awk kuchagua chaguo la mwisho:this is tecmint, where you get the best good tutorials, how to's, guides, tecmint
Chukua kwa mfano seti ya
[al1]
, hapa awk italingana na mifuatano yote iliyo na herufia
aul
au1
kwenye mstari kwenye faili /etc/hosts.# awk '/[al1]/{print}' /etc/hosts
Mfano unaofuata unalingana na mifuatano inayoanza na
K
auk
ikifuatiwa naT
:# awk '/[Kk]T/{print}' /etc/hosts
Kuelewa wahusika na awk:
[0-9]
inamaanisha nambari moja[a-z]
ina maana inayolingana na herufi ndogo moja[A-Z]
ina maana inayolingana na herufi kubwa moja[a-zA-Z]
ina maana inayolingana na herufi moja[a-zA-Z 0-9]
ina maana inayolingana na herufi moja au nambari
Hebu tuangalie mfano hapa chini:
# awk '/[0-9]/{print}' /etc/hosts
Laini zote kutoka kwa faili /etc/hosts zina angalau nambari moja
[0-9]
katika mfano ulio hapo juu.Inalingana na mistari yote inayoanza na muundo uliotolewa kama katika mfano hapa chini:
# awk '/^fe/{print}' /etc/hosts # awk '/^ff/{print}' /etc/hosts
Inalingana na mistari yote inayoisha na muundo uliotolewa:
# awk '/ab$/{print}' /etc/hosts # awk '/ost$/{print}' /etc/hosts # awk '/rs$/{print}' /etc/hosts
Inakuruhusu kuchukua mhusika anayeifuata kama halisi ambayo ni kusema ifikirie kama ilivyo.
Katika mfano hapa chini, amri ya kwanza inachapisha safu zote kwenye faili, amri ya pili haichapishi chochote kwa sababu ninataka kulinganisha laini ambayo ina $25.00, lakini hakuna herufi ya kutoroka inayotumiwa.
Amri ya tatu ni sahihi kwani herufi ya kutoroka imetumika kusoma $kama ilivyo.
# awk '//{print}' deals.txt # awk '/$25.00/{print}' deals.txt # awk '/\$25.00/{print}' deals.txt
Muhtasari
Hiyo sio yote na zana ya kuchuja ya mstari wa amri ya awk, mifano hapo juu a shughuli za kimsingi za awk. Katika sehemu zinazofuata tutakuwa tukiendeleza jinsi ya kutumia vipengele changamano vya awk. Asante kwa kusoma na kwa nyongeza au ufafanuzi wowote, chapisha maoni katika sehemu ya maoni.