Awk gurlan üýtgeýjileri nähili ulanmalydygyny öwreniň - 10-njy bölüm
Awk aýratynlyklarynyň bölümini açanymyzda, seriýanyň bu bölüminde Awk-da gurlan üýtgeýjiler düşünjesini öwreneris. Awk-da ulanyp boljak üýtgeýjileriň iki görnüşi bar, bular; ulanyjy kesgitlän üýtgeýjiler, 8-nji bölümde we içerki üýtgeýänler.
Gurlan üýtgeýjileriň Awk-da eýýäm kesgitlenen bahalary bar, ýöne şol bahalary üns bilen üýtgedip bileris, gurlan üýtgeýjiler şulary öz içine alýar:
-
FILENAME
: häzirki giriş faýlyň ady (üýtgeýän ady üýtgetmäň) -
FR
: häzirki giriş çyzygynyň sany (ýagny giriş setiri 1, 2, 3… we ş.m. üýtgeýän ady üýtgetmäň) -
NF
: häzirki giriş setirindäki meýdanlaryň sany (üýtgeýän ady üýtgetmäň) -
OFS
: çykyş meýdany bölüji -
FS
: giriş meýdany bölüji -
ORS
: çykyş ýazgylaryny bölüji -
RS
: giriş ýazgylaryny bölüji
Aboveokardaky “Awk” içindäki üýtgeýänleriň käbiriniň ulanylyşyny görkezmäge geçeliň:
Häzirki giriş faýlyň adyny okamak üçin, FILENAME
gurlan üýtgeýjini aşakdaky ýaly ulanyp bilersiňiz:
$ awk ' { print FILENAME } ' ~/domains.txt
Faýlyň adynyň her giriş setiri üçin çap edilendigine düşünersiňiz, gurnalan üýtgeýjini FILENAME
ulananyňyzda Awk-iň adaty hereketi.
Giriş faýlyndaky setirleriň (ýazgylaryň) sanyny sanamak üçin NR
ulanyp, aşakdaky mysalda görşümiz ýaly boş setirleri hem hasaplaýandygyny ýadyňyzdan çykarmaň.
Domen.txt faýlyny pişik buýrugyny ulanyp görenimizde, tekst bilen 14 setir we boş 2 setir bar:
$ cat ~/domains.txt
$ awk ' END { print "Number of records in file is: ", NR } ' ~/domains.txt
Recordazgyda ýa-da setirde meýdanlaryň sanyny sanamak üçin, NR içindäki üýtgeýjini aşakdaky ýaly ulanýarys:
$ cat ~/names.txt
$ awk '{ print "Record:",NR,"has",NF,"fields" ; }' ~/names.txt
Ondan soň, FS
gurlan üýtgeýjini ulanyp, giriş meýdany bölüjisini hem kesgitläp bilersiňiz, Awk giriş setirlerini meýdanlara nädip bölýändigini kesgitleýär.
FS
üçin deslapky baha giňişlik we tabdyr, ýöne FS
bahasyny Awk-a degişlilikde giriş setirlerini bölmegi görkezjek islendik nyşan bilen üýtgedip bileris.
Muny etmegiň iki usuly bar:
- bir usul, FS içindäki üýtgeýjini ulanmakdyr
- ikinjisi -F Awk opsiýasyny ulanmak
Linux ulgamynda/etc/passwd faýlyna serediň, bu faýldaky meýdanlar :
nyşany bilen bölünýär, şonuň üçin käbir meýdanlary süzmek islänimizde ony täze giriş meýdançasy hökmünde kesgitläp bileris. aşakdaky mysallarda bolşy ýaly:
-F
opsiýasyny aşakdaky ýaly ulanyp bileris:
$ awk -F':' '{ print $1, $4 ;}' /etc/passwd
Islege görä, aşakdaky ýaly gurlan üýtgeýjiden FS
peýdalanyp bileris:
$ awk ' BEGIN { FS=“:” ; } { print $1, $4 ; } ' /etc/passwd
Çykyş meýdany bölüjisini kesgitlemek üçin, içindäki üýtgeýjini OFS
ulanyň, aşakdaky mysaldaky ýaly ulanýan belgimizi ulanyp, çykyş meýdanlarynyň nähili bölünjekdigini kesgitleýär:
$ awk -F':' ' BEGIN { OFS="==>" ;} { print $1, $4 ;}' /etc/passwd
Bu bölümiň 10-njy bölüminde öňünden kesgitlenen bahalar bilen gelýän Awk içindäki üýtgeýänleri ulanmak pikirini öwrendik. Emma bu gymmatlyklary hem üýtgedip bileris, ýöne näme edýändigiňizi bilmeseňiz, ýeterlik düşünmek bilen muny etmek maslahat berilmeýär.
Ondan soň, Awk buýruk amallarynda gabyk üýtgeýjilerini nädip ulanyp boljakdygymyzy öwreneris, şonuň üçin Tecmint-e birikdiriň.