Kif tuża Espressjonijiet Awk u regolari biex tiffiltra Test jew String fil-Fajls
Meta nħaddmu ċerti kmandi f'Unix/Linux biex naqraw jew neditjaw test minn string jew fajl, ħafna drabi nippruvaw niffiltraw l-output għal sezzjoni partikolari ta 'interess. Dan huwa fejn l-użu ta 'espressjonijiet regolari jiġi utli.
Espressjoni regolari tista 'tiġi definita bħala kordi li jirrappreżentaw diversi sekwenza ta' karattri. Waħda mill-aktar affarijiet importanti dwar l-espressjonijiet regolari hija li jippermettulek tiffiltra l-output ta 'kmand jew fajl, teditja sezzjoni ta' test jew fajl ta 'konfigurazzjoni eċċ.
L-espressjonijiet regolari huma magħmula minn:
- Karattri ordinarji bħal spazju, underscore(_), A-Z, a-z, 0-9.
- Meta karattri li huma estiżi għal karattri ordinarji, jinkludu:
(.)
taqbel ma' kwalunkwe karattru wieħed ħlief linja ġdida.(*)
taqbel ma' żero jew aktar eżistenzi tal-karattru immedjat li jkun qabel.[ karattru(i) ]
taqbel ma' kwalunkwe wieħed mill-karattri speċifikati f'karattru(i), wieħed jista' juża wkoll sing(-)
biex ifisser firxa ta’ karattri bħal[a-f]
,[1-5]
, eċċ.^
taqbel mal-bidu ta' linja f'fajl.$
jaqbel mat-tmiem tal-linja f'fajl.\
huwa karattru ta' ħarba.
Sabiex tiffiltra t-test, wieħed irid juża għodda għall-iffiltrar tat-test bħal awk. Tista 'taħseb awk bħala lingwa ta' programmar tagħha stess. Iżda għall-ambitu ta 'din il-gwida għall-użu ta' awk, aħna nkopruha bħala għodda sempliċi ta 'filtrazzjoni tal-linja tal-kmand.
Is-sintassi ġenerali ta' awk hija:
# awk 'script' filename
Fejn
script
huwa sett ta' kmandi li jinftiehmu b'awk u li jiġu esegwiti fuq il-fajl, isem il-fajl.Taħdem billi taqra linja partikolari fil-fajl, tagħmel kopja tal-linja u mbagħad tesegwixxi l-iskrittura fuq il-linja. Dan huwa ripetut fuq il-linji kollha fil-fajl.
L-
script
huwa fil-forma/pattern/ action
fejn il-mudell huwa espressjoni regolari u l-azzjoni hija dak li se jagħmel awk meta jsib il-mudell mogħti f'linja.Kif tuża Awk Iffiltrar Għodda fil-Linux
Fl-eżempji li ġejjin, se niffukaw fuq il-karattri meta li ddiskutejna hawn fuq taħt il-karatteristiċi ta 'awk.
L-eżempju hawn taħt jistampa l-linji kollha fil-fajl /etc/hosts peress li ma jingħata l-ebda mudell.
# awk '//{print}'/etc/hosts
I l-eżempju hawn taħt, mudell
localhost
ingħata, għalhekk awk se jaqbel mal-linja li jkollha localhost fil-fajl/etc/hosts
.# awk '/localhost/{print}' /etc/hosts
Il-
(.)
se jaqbel ma' kordi li fihom loc, localhost, localnet fl-eżempju hawn taħt.Jiġifieri * l some_single_character c *.
# awk '/l.c/{print}' /etc/hosts
Se jaqbel ma' kordi li fihom localhost, localnet, linji, kapaċi, bħal fl-eżempju hawn taħt:
# awk '/l*c/{print}' /etc/localhost
Int tirrealizza wkoll li
(*)
jipprova jġiblek l-itwal taqbila possibbli li tista' tiskopri.Ejja nħarsu lejn każ li juri dan, ħu l-espressjoni regolari
t*t
li tfisser kordi jaqblu li jibdew bl-ittrat
u jispiċċaw b't
fil-linja hawn taħt:this is tecmint, where you get the best good tutorials, how to's, guides, tecmint.
Se tikseb il-possibbiltajiet li ġejjin meta tuża l-mudell
/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
U
(*)
f'/t*t/
karattru wild card jippermetti lil awk jagħżel l-aħħar għażla:this is tecmint, where you get the best good tutorials, how to's, guides, tecmint
Ħu pereżempju s-sett
[al1]
, hawnhekk awk se jaqbel mal-kordi kollha li jkun fihom il-karattrua
jewl
jew1
f'linja fil-fajl /etc/hosts.# awk '/[al1]/{print}' /etc/hosts
L-eżempju li jmiss jaqbel ma' kordi li jibdew jew bi
K
jewk
segwiti minnT
:# awk '/[Kk]T/{print}' /etc/hosts
Ifhem karattri b'awk:
[0-9]
tfisser numru wieħed[a-z]
tfisser li tqabbel ittra żgħira waħda[A-Z]
tfisser li taqbel ma' ittra kbira waħda[a-zA-Z]
tfisser tqabbel ittra waħda[a-zA-Z 0-9]
tfisser li tqabbel ittra jew numru wieħed
Ejja nħarsu lejn eżempju hawn taħt:
# awk '/[0-9]/{print}' /etc/hosts
Il-linja kollha mill-fajl /etc/hosts fiha mill-inqas numru wieħed
[0-9]
fl-eżempju ta' hawn fuq.Taqbel mal-linji kollha li jibdew bil-mudell ipprovdut bħal fl-eżempju hawn taħt:
# awk '/^fe/{print}' /etc/hosts # awk '/^ff/{print}' /etc/hosts
Taqbel mal-linji kollha li jispiċċaw bil-mudell ipprovdut:
# awk '/ab$/{print}' /etc/hosts # awk '/ost$/{print}' /etc/hosts # awk '/rs$/{print}' /etc/hosts
Jippermettilek tieħu l-karattru li jsegwih bħala litterali jiġifieri tqisu kif inhi.
Fl-eżempju hawn taħt, l-ewwel kmand jistampa l-linja kollha fil-fajl, it-tieni kmand ma jistampa xejn għax irrid inqabbel linja li għandha $25.00, iżda ma jintuża l-ebda karattru ta 'ħarba.
It-tielet kmand huwa korrett peress li ntuża karattru ta' ħarba biex jaqra $kif inhu.
# awk '//{print}' deals.txt # awk '/$25.00/{print}' deals.txt # awk '/\$25.00/{print}' deals.txt
Sommarju
Dan mhux kollox bl-għodda tal-filtrazzjoni tal-linja tal-kmand awk, l-eżempji ta 'hawn fuq l-operazzjonijiet bażiċi ta' awk. Fil-partijiet li jmiss se nkunu qed navvanzaw dwar kif nużaw karatteristiċi kumplessi ta 'awk. Grazzi talli qrajt u għal kwalunkwe żidiet jew kjarifiki, poġġi kumment fit-taqsima tal-kummenti.