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:

  1. FILENAME : núverandi inntaksskráarheiti (breytir ekki breytuheiti)
  2. FR : númer núverandi innsláttarlínu (það er inntakslína 1, 2, 3... svo framvegis, ekki breyta heiti breytu)
  3. NF : fjöldi reita í núverandi innsláttarlínu (ekki breyta heiti breytu)
  4. OFS: úttaksreiturskilari
  5. FS: innsláttarreiturskilur
  6. ORS: úttaksfærsluskilgreinar
  7. RS: 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:

  1. ein aðferð er að nota FS innbyggðu breytuna
  2. 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.