Sužinokite, kaip naudoti „Awk“ įmontuotus kintamuosius - 10 dalis
Atskleisdami „Awk“ funkcijų skyrių, šioje serijos dalyje apžvelgsime „Awk“ įmontuotų kintamųjų sąvoką. Yra dviejų tipų kintamieji, kuriuos galite naudoti „Awk“, tai yra; vartotojo apibrėžti kintamieji, kuriuos aptarėme 8 dalyje, ir įmontuoti kintamieji.
Įtaisytųjų kintamųjų reikšmės jau yra apibrėžtos „Awk“, tačiau šias vertes taip pat galime atsargiai pakeisti, o įmontuotus kintamuosius sudaro:
-
FILENAME
: dabartinis įvesties failo pavadinimas (nekeisti kintamojo pavadinimo) -
FR
: dabartinės įvesties eilutės numeris (tai yra 1, 2, 3 įvesties eilutės ir pan., nekeiskite kintamojo pavadinimo) -
NF
: laukų skaičius dabartinėje įvesties eilutėje (nekeisti kintamojo pavadinimo) -
OFS
: išvesties lauko skyriklis -
FS
: įvesties lauko skyriklis -
ORS
: išvesties įrašų skyriklis -
RS
: įvesties įrašų skyriklis
Toliau iliustruokime kai kurių aukščiau pateiktų „Awk“ įmontuotų kintamųjų naudojimą:
Norėdami perskaityti dabartinio įvesties failo pavadinimą, galite naudoti integruotą kintamąjį FILENAME
taip:
$ awk ' { print FILENAME } ' ~/domains.txt
Jūs suprasite, kad kiekvienos įvesties eilutės failo pavadinimas yra atspausdintas, tai yra numatytasis „Awk“ elgesys, kai naudojate integruotą kintamąjį FILENAME
.
Naudodami NR
skaičiuodami eilučių (įrašų) skaičių įvesties faile, atminkite, kad tai taip pat skaičiuoja tuščias eilutes, kaip matysime toliau pateiktame pavyzdyje.
Kai peržiūrime failą domains.txt naudodami „cat“ komandą, jame yra 14 eilučių su tekstu ir tuščių 2 eilučių:
$ cat ~/domains.txt
$ awk ' END { print "Number of records in file is: ", NR } ' ~/domains.txt
Norėdami suskaičiuoti laukų skaičių įraše ar eilutėje, mes naudojame NR integruotą kintamąjį taip:
$ cat ~/names.txt
$ awk '{ print "Record:",NR,"has",NF,"fields" ; }' ~/names.txt
Be to, naudodami integruotą kintamąjį FS
galite nurodyti įvesties lauko skyriklį, kuris apibrėžia, kaip Awk dalija įvesties eilutes į laukus.
Numatytoji FS
reikšmė yra tarpas ir skirtukas, tačiau FS
reikšmę galime pakeisti į bet kurį simbolį, kuris nurodys Awk atitinkamai padalyti įvesties eilutes.
Tai galima padaryti dviem būdais:
- vienas iš būdų yra naudoti integruotą FS kintamąjį
- antrasis - pasinaudoti parinktimi -F Awk
Apsvarstykite failą/etc/passwd „Linux“ sistemoje, šio failo laukai yra padalijami naudojant simbolį :
, todėl mes galime jį nurodyti kaip naują įvesties lauko skyriklį, kai norime filtruoti tam tikrus laukus kaip šiuose pavyzdžiuose:
Parinktį -F
galime naudoti taip:
$ awk -F':' '{ print $1, $4 ;}' /etc/passwd
Pasirinktinai taip pat galime pasinaudoti įtaisytuoju FS
kintamuoju, kaip nurodyta toliau:
$ awk ' BEGIN { FS=“:” ; } { print $1, $4 ; } ' /etc/passwd
Norėdami nurodyti išvesties lauko skyriklį, naudokite integruotą kintamąjį OFS
, jis apibrėžia, kaip išvesties laukai bus atskirti naudojant mūsų naudojamą simbolį, kaip nurodyta toliau pateiktame pavyzdyje:
$ awk -F':' ' BEGIN { OFS="==>" ;} { print $1, $4 ;}' /etc/passwd
Šioje 10 dalyje mes ištyrėme idėją naudoti „Awk“ įmontuotus kintamuosius, kurie turi iš anksto nustatytas reikšmes. Tačiau mes taip pat galime pakeisti šias vertybes, tačiau nerekomenduojama to daryti, nebent žinote, ką darote, tinkamai suprasdami.
Po to mes pažvelgsime į tai, kaip galime naudoti „shell“ kintamuosius „Awk“ komandų operacijose, todėl palaikykite ryšį su „Tecmint“.