Lærðu hvernig á að nota Awk innbyggðar breytur - Part 10
Þegar við afhjúpum hluta Awk eiginleikanna, í þessum hluta seríunnar, munum við ganga í gegnum hugmyndina um innbyggðar breytur í Awk. Það eru tvær tegundir af breytum sem þú getur notað í Awk, þetta eru; notendaskilgreindar breytur, sem við fórum yfir í hluta 8 og innbyggðar breytur.
Innbyggðar breytur hafa gildi sem þegar eru skilgreind í Awk, en við getum líka breytt þeim gildum vandlega, innbyggðu breyturnar innihalda:
FILENAME
: núverandi inntaksskráarheiti (breytir ekki breytuheiti)FR
: númer núverandi innsláttarlínu (það er inntakslína 1, 2, 3... svo framvegis, ekki breyta heiti breytu)NF
: fjöldi reita í núverandi innsláttarlínu (ekki breyta heiti breytu)OFS
: úttaksreiturskilariFS
: innsláttarreiturskilurORS
: úttaksfærsluskilgreinarRS
: inntaksfærsluskilgreinar
Við skulum halda áfram að sýna notkun á sumum Awk innbyggðu breytunum hér að ofan:
Til að lesa skráarnafn núverandi inntaksskrár geturðu notað FILENAME
innbyggðu breytuna sem hér segir:
$ awk ' { print FILENAME } ' ~/domains.txt
Þú munt átta þig á því að skráarnafnið er prentað út fyrir hverja innsláttarlínu, það er sjálfgefin hegðun Awk þegar þú notar FILENAME
innbyggðu breytuna.
Með því að nota NR
til að telja fjölda lína (skrár) í inntaksskrá, mundu að það telur einnig tómu línurnar, eins og við munum sjá í dæminu hér að neðan.
Þegar við skoðum skrána domains.txt með cat skipun, þá inniheldur hún 14 línur með texta og tómar 2 línur:
$ cat ~/domains.txt
$ awk ' END { print "Number of records in file is: ", NR } ' ~/domains.txt
Til að telja fjölda reita í færslu eða línu notum við NR innbyggðu breytuna sem hér segir:
$ cat ~/names.txt
$ awk '{ print "Record:",NR,"has",NF,"fields" ; }' ~/names.txt
Næst geturðu líka tilgreint innsláttarreitskilju með FS
innbyggðu breytunni, hún skilgreinir hvernig Awk skiptir inntakslínum í reiti.
Sjálfgefið gildi fyrir FS
er bil og tab, en við getum breytt gildi FS
í hvaða staf sem er sem gefur Awk fyrirmæli um að skipta innsláttarlínum í samræmi við það.
Það eru tvær aðferðir til að gera þetta:
- ein aðferð er að nota FS innbyggðu breytuna
- og annað er að kalla fram -F Awk valkostinn
Skoðum skrána /etc/passwd á Linux kerfi, reitunum í þessari skrá er skipt með :
stafnum, svo við getum tilgreint hana sem nýja innsláttarreitskiljuna þegar við viljum sía út ákveðna reiti eins og í eftirfarandi dæmum:
Við getum notað -F
valkostinn sem hér segir:
$ awk -F':' '{ print $1, $4 ;}' /etc/passwd
Valfrjálst getum við einnig nýtt okkur FS
innbyggðu breytuna eins og hér að neðan:
$ awk ' BEGIN { FS=“:” ; } { print $1, $4 ; } ' /etc/passwd
Til að tilgreina úttaksreitskilju, notaðu OFS
innbyggðu breytuna, hún skilgreinir hvernig úttaksreitirnir verða aðskildir með því að nota stafinn sem við notum eins og í dæminu hér að neðan:
$ awk -F':' ' BEGIN { OFS="==>" ;} { print $1, $4 ;}' /etc/passwd
Í þessum hluta 10 höfum við kannað hugmyndina um að nota Awk innbyggðar breytur sem koma með fyrirfram skilgreindum gildum. En við getum líka breytt þessum gildum, þó er ekki mælt með því að gera það nema þú vitir hvað þú ert að gera, með fullnægjandi skilningi.
Eftir þetta munum við fara yfir hvernig við getum notað skelbreytur í Awk stjórnunaraðgerðum, verum því tengdur við Tecmint.