Kaj je AWK NF?

Kaj Je Awk Nf



Skriptni jezik AWK ima tudi vrsto vgrajenih posebnih spremenljivk, ki služijo nekaterim vnaprej določenim namenom. Ena taka vgrajena spremenljivka je 'NF', ki ima svojo vnaprej določeno funkcionalnost. Ta članek bo raziskal namen te vgrajene spremenljivke AWK s prikazom nekaterih ustreznih primerov v Ubuntu 20.04.

AWK NF v Ubuntu 20.04:

Spremenljivka »NF« AWK se uporablja za tiskanje števila polj v vseh vrsticah katere koli podane datoteke. Ta vgrajena spremenljivka eno za drugo pregleda vse vrstice datoteke in natisne število polj posebej za vsako vrstico. Da bi dobro razumeli to funkcionalnost, boste morali prebrati primere, obravnavane spodaj.

Primeri za prikaz uporabe AWK NF v Ubuntu 20.04:

Naslednji štirje primeri so bili zasnovani tako, da vas naučijo uporabe AWK NF na zelo lahko razumljiv način. Vsi ti primeri so bili implementirani z uporabo operacijskega sistema Ubuntu 20.04.







Primer št. 1: Natisnite število polj iz vsake vrstice besedilne datoteke:

V tem primeru smo želeli natisniti število polj ali stolpcev vsake vrstice ali vrstice ali zapisa besedilne datoteke v Ubuntu 20.04. Da vam pokažemo način za to, smo ustvarili besedilno datoteko, prikazano na spodnji sliki. Ta besedilna datoteka vsebuje cene jabolk na kilogram iz petih različnih mest v Pakistanu.





Ko smo ustvarili to vzorčno besedilno datoteko, smo izvedli naslednji ukaz za tiskanje števila polj iz vsake vrstice te besedilne datoteke v našem terminalu:





$ awk ' { natisni NF } ' AppleRates.txt

V tem ukazu imamo ključno besedo »awk«, ki kaže, da izvajamo ukaz AWK, ki mu sledi stavek »print NF«, ki bo preprosto ponovil vsako vrstico ciljne besedilne datoteke in natisnil število polj posebej za vsako vrstico besedilne datoteke. Končno imamo ime besedilne datoteke (katere polja je treba prešteti), ki je v našem primeru »AppleRatest.txt«.



Ker smo imeli popolnoma enako število polj za vseh pet vrstic naše besedilne datoteke, tj. 2, se zaradi izvajanja tega ukaza izpiše enako število kot število polj za vse vrstice besedilne datoteke. To je razvidno iz spodnje slike:

Primer št. 2: Natisnite število polj iz vsake vrstice besedilne datoteke na predstavljiv način:

Izhod, prikazan v zgoraj obravnavanem primeru, je lahko tudi lepo predstavljen s prikazom številk vrstic in števila polj vsake vrstice besedilne datoteke. Poleg tega lahko ločimo številke vrstic od števila polj s katerim koli posebnim znakom po naši izbiri. Za prikaz tega bomo uporabili isto besedilno datoteko, ki smo jo uporabili za naš prvi primer. Vendar se bo naš ukaz, ki ga bomo v tem primeru izvršili, nekoliko razlikoval in je naslednji:

$ awk ' { natisni NR, “---”, NF } ' AppleRates.txt

V tem ukazu smo uvedli vgrajeno spremenljivko AWK »NR«, ki bo preprosto natisnila številke vrstic vseh vrstic naše ciljne besedilne datoteke. Poleg tega smo uporabili tri pomišljaje, »—« kot poseben znak za ločevanje številk vrstic od števila polj besedilne datoteke, ki smo jo zagotovili.

Ta nekoliko spremenjen rezultat iste besedilne datoteke je prikazan na spodnji sliki:

Primer št. 3: Natisnite prvo in zadnje polje iz vsake vrstice besedilne datoteke:

Poleg samo štetja števila polj vseh vrstic podane besedilne datoteke lahko posebno spremenljivko »NF« AWK uporabite tudi za ekstrahiranje dejanskih vrednosti zadnjega polja iz predložene besedilne datoteke. Spet smo uporabili isto besedilno datoteko, kot smo jo uporabili za prva dva primera. Vendar želimo v tem primeru natisniti dejanske vrednosti prvega in zadnjega polja naše besedilne datoteke. Za to smo izvedli naslednji ukaz:

$ awk ' { tiskanje 1 dolar , $NF } ' AppleRates.txt

Ključni besedi »awk« v tem ukazu sledi stavek »print $1, $NF«. Posebna spremenljivka »$1« je bila uporabljena za tiskanje vrednosti prvega polja ali prvega stolpca besedilne datoteke, ki smo jo zagotovili, medtem ko je bila spremenljivka »$NF« AWK uporabljena za tiskanje vrednosti zadnjega polja ali zadnjega stolpca naše ciljne besedilne datoteke. Tukaj morate opaziti, da ko uporabimo spremenljivko »NF« AWK, kot je, se uporablja za štetje števila polj vsake vrstice; če pa se uporablja s simbolom dolarja »$«, bo preprosto izvlekel dejanske vrednosti iz zadnjega polja predložene besedilne datoteke. Preostali del ukaza je bolj ali manj enak kot pri ukazih, ki smo jih uporabili v prvih dveh primerih.

V izhodu, prikazanem spodaj, lahko vidite, da so bile dejanske vrednosti iz prvega in zadnjega polja besedilne datoteke, ki smo jo zagotovili, natisnjene na terminalu. Vidite lahko, da je ta izhod precej podoben izhodu ukaza »cat« samo zato, ker smo imeli v naši besedilni datoteki samo dve polji; zato je bila na nek način vsebina naše celotne besedilne datoteke natisnjena na terminalu kot rezultat izvajanja zgoraj omenjenega ukaza.

Primer št. 4: ločite zapise z manjkajočimi polji v besedilni datoteki:

Včasih je v besedilni datoteki nekaj zapisov z določenimi manjkajočimi polji in morda boste želeli te zapise ločiti od tistih, ki so popolni v vseh pogledih. To lahko storite tudi z uporabo spremenljivke 'NF' AWK. Za to smo ustvarili besedilno datoteko z imenom »ExamMarks.txt«, ki vsebuje rezultate izpitov petih različnih študentov pri treh različnih izpitih skupaj z njihovimi imeni. Pri tretjem izpitu pa je bilo nekaj študentov odsotnih, zaradi česar so njihove ocene manjkale. Ta besedilna datoteka je naslednja:

Da bi ločili zapise z manjkajočimi polji od zapisov s popolnimi polji, bomo izvedli spodnji ukaz:

$ awk ' { natisni NR, “--- > «, NF } ' ExamMarks.txt

Ta ukaz je enak tistemu, ki smo ga uporabili za naš drugi primer. Vendar lahko iz izhoda tega ukaza, prikazanega na naslednji sliki, vidite, da sta prvi in ​​četrti zapis popolna, medtem ko drugi, tretji in peti zapis vsebujejo manjkajoča polja.

Zaključek:

Namen tega članka je bil razložiti uporabo posebne spremenljivke »NF« AWK. Najprej smo na kratko obravnavali, kako ta spremenljivka deluje, nato pa smo ta koncept dobro razdelali s pomočjo štirih različnih primerov. Ko boste dobro razumeli vse primere v skupni rabi, boste lahko uporabili spremenljivko »NF« AWK za štetje skupnega števila polj in tiskanje dejanskih vrednosti zadnjega polja predložene datoteke.