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:

  1. FILENAME : dabartinis įvesties failo pavadinimas (nekeisti kintamojo pavadinimo)
  2. FR : dabartinės įvesties eilutės numeris (tai yra 1, 2, 3 įvesties eilutės ir pan., nekeiskite kintamojo pavadinimo)
  3. NF : laukų skaičius dabartinėje įvesties eilutėje (nekeisti kintamojo pavadinimo)
  4. OFS : išvesties lauko skyriklis
  5. FS : įvesties lauko skyriklis
  6. ORS : išvesties įrašų skyriklis
  7. 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:

  1. vienas iš būdų yra naudoti integruotą FS kintamąjį
  2. 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“.