Što je AWK NF?

Sto Je Awk Nf



AWK skriptni jezik također ima niz ugrađenih posebnih varijabli koje služe nekim unaprijed definiranim svrhama. Jedna takva ugrađena varijabla je 'NF' koja ima vlastitu unaprijed definiranu funkcionalnost. Ovaj članak će istražiti svrhu ove ugrađene AWK varijable demonstrirajući neke relevantne primjere u Ubuntu 20.04.

AWK NF u Ubuntu 20.04:

AWK varijabla “NF” koristi se za ispis broja polja u svim redovima bilo koje ponuđene datoteke. Ova ugrađena varijabla prolazi kroz sve retke datoteke jedan po jedan i ispisuje broj polja zasebno za svaki redak. Da biste dobro razumjeli ovu funkciju, morat ćete pročitati primjere o kojima se raspravlja u nastavku.

Primjeri za demonstraciju upotrebe AWK NF u Ubuntu 20.04:

Sljedeća četiri primjera osmišljena su na način da vas pouče korištenju AWK NF-a na vrlo lako razumljiv način. Svi ovi primjeri implementirani su pomoću operativnog sustava Ubuntu 20.04.







Primjer # 1: Ispis broja polja iz svakog retka tekstualne datoteke:

U ovom primjeru htjeli smo ispisati broj polja ili stupaca svakog retka ili retka ili zapisa tekstualne datoteke u Ubuntu 20.04. Kako bismo vam pokazali kako to učiniti, stvorili smo tekstualnu datoteku prikazanu na slici ispod. Ova tekstualna datoteka sadrži stope jabuka po kilogramu iz pet različitih gradova Pakistana.





Nakon što smo kreirali ovu oglednu tekstualnu datoteku, izvršili smo sljedeću naredbu za ispis broja polja iz svakog retka ove tekstualne datoteke u našem terminalu:





$ nezgodno ' { ispisati NF } ’ AppleRates.txt

U ovoj naredbi imamo ključnu riječ 'awk' koja pokazuje da izvodimo AWK naredbu praćenu naredbom 'print NF' koja će jednostavno iterirati kroz svaki red ciljne tekstualne datoteke i ispisati broj polja zasebno za svako redak tekstualne datoteke. Konačno, imamo naziv te tekstualne datoteke (čija se polja broje) koja je u našem slučaju “AppleRatest.txt”.



Budući da smo imali točno isti broj polja za svih pet redaka naše tekstualne datoteke, tj. 2, isti se broj ispisuje kao broj polja za sve redove tekstualne datoteke zbog izvršavanja ove naredbe. To se može vidjeti na slici ispod:

Primjer # 2: Ispišite broj polja iz svakog retka tekstualne datoteke na vidljiv način:

Izlaz prikazan u gore navedenom primjeru također se može lijepo predstaviti prikazivanjem brojeva redaka i broja polja svakog retka tekstualne datoteke. Štoviše, također možemo odvojiti brojeve redaka od broja polja bilo kojim posebnim znakom po našem izboru. Koristit ćemo istu tekstualnu datoteku koju smo koristili za naš prvi primjer da vam to pokažemo. Međutim, naša naredba koju treba izvršiti u ovom slučaju malo će se razlikovati, a glasi kako slijedi:

$ nezgodno ' { ispis NR, “---”, NF } ’ AppleRates.txt

U ovoj smo naredbi uveli ugrađenu AWK varijablu 'NR' koja će jednostavno ispisati brojeve redaka svih redaka naše ciljne tekstualne datoteke. Štoviše, upotrijebili smo tri crtice, “—” kao poseban znak za odvajanje brojeva redaka od broja polja naše priložene tekstualne datoteke.

Ovaj blago modificirani izlaz iste tekstualne datoteke prikazan je na slici ispod:

Primjer # 3: Ispis prvog i posljednjeg polja iz svakog retka tekstualne datoteke:

Osim samo prebrojavanja polja svih redaka dostavljene tekstualne datoteke, posebna varijabla “NF” AWK-a također se može koristiti za izdvajanje stvarnih vrijednosti posljednjeg polja iz dostavljene tekstualne datoteke. Ponovno smo koristili istu tekstualnu datoteku koju smo koristili za prva dva primjera. Međutim, želimo ispisati stvarne vrijednosti prvog i zadnjeg polja naše tekstualne datoteke u ovom primjeru. Za to smo izvršili sljedeću naredbu:

$ nezgodno ' { ispisati $1 , $NF } ’ AppleRates.txt

Ključnu riječ 'awk' prati izjava 'print $1, $NF' u ovoj naredbi. Posebna varijabla “$1” korištena je za ispis vrijednosti prvog polja ili prvog stupca naše tekstualne datoteke, dok je varijabla “$NF” AWK korištena za ispis vrijednosti posljednjeg polja ili zadnjeg stupca naše ciljne tekstualne datoteke. Ovdje morate primijetiti da kada koristimo “NF” AWK varijablu takvu kakva jest, onda se ona koristi za brojanje broja polja svake linije; međutim, kada se koristi sa simbolom dolara “$”, tada će jednostavno izvući stvarne vrijednosti iz posljednjeg polja ponuđene tekstualne datoteke. Ostatak naredbi je više-manje isti kao naredbe koje su korištene u prva dva primjera.

U ispisu prikazanom u nastavku možete vidjeti da su stvarne vrijednosti iz prvog i zadnjeg polja naše tekstualne datoteke ispisane na terminalu. Možete vidjeti da je ovaj izlaz prilično sličan izlazu naredbe “cat” samo zato što smo imali samo dva polja u našoj tekstualnoj datoteci; dakle, na neki način, sadržaj cijele naše tekstualne datoteke ispisan je na terminalu kao rezultat izvršavanja gore navedene naredbe.

Primjer # 4: Odvojite zapise s nedostajućim poljima u tekstualnoj datoteci:

Ponekad postoje neki zapisi u tekstualnoj datoteci s određenim nedostajućim poljima, pa biste mogli odvojiti te zapise od onih koji su potpuni u svakom pogledu. To se također može učiniti korištenjem 'NF' AWK varijable. Za to smo stvorili tekstualnu datoteku pod nazivom 'ExamMarks.txt' koja sadrži ispitne rezultate pet različitih studenata na tri različita ispita zajedno s njihovim imenima. Međutim, na trećem ispitu dio učenika je izostao zbog čega su izostali bodovi. Ova tekstualna datoteka je sljedeća:

Kako bismo razlikovali zapise s nedostajućim poljima od zapisa s potpunim poljima, izvršit ćemo naredbu prikazanu u nastavku:

$ nezgodno ' { ispis NR, “--- > ”, NF } ’ ExamMarks.txt

Ova naredba je ista kao ona koju smo koristili za naš drugi primjer. Međutim, iz rezultata ove naredbe prikazanog na sljedećoj slici možete vidjeti da su prvi i četvrti zapis potpuni, dok drugi, treći i peti zapis sadrže polja koja nedostaju.

Zaključak:

Svrha ovog članka bila je objasniti korištenje posebne varijable 'NF' AWK. Prvo smo ukratko prodiskutirali kako ova varijabla funkcionira, a nakon toga smo dobro razradili ovaj koncept uz pomoć četiri različita primjera. Nakon što dobro razumijete sve dijeljene primjere, moći ćete koristiti 'NF' AWK varijablu za brojanje ukupnog broja polja i ispis stvarnih vrijednosti posljednjeg polja dostavljene datoteke.