Hvad er AWK NF?

Hvad Er Awk Nf



AWK-scriptsproget har også en række indbyggede specielle variabler til at tjene nogle foruddefinerede formål. En sådan indbygget variabel er 'NF', som har sin egen foruddefinerede funktionalitet. Denne artikel vil udforske formålet med denne indbyggede AWK-variabel ved at demonstrere nogle relevante eksempler i Ubuntu 20.04.

AWK NF i Ubuntu 20.04:

'NF' AWK-variablen bruges til at udskrive antallet af felter i alle linjerne i en given fil. Denne indbyggede variabel gentager alle linjerne i filen én efter én og udskriver antallet af felter separat for hver linje. For at forstå denne funktionalitet pænt, bliver du nødt til at læse eksemplerne diskuteret nedenfor.

Eksempler til demonstration af brugen af ​​AWK NF i Ubuntu 20.04:

De følgende fire eksempler er designet til at lære dig brugen af ​​AWK NF på en meget letforståelig måde. Alle disse eksempler er blevet implementeret ved hjælp af Ubuntu 20.04-operativsystemet.







Eksempel # 1: Udskriv antallet af felter fra hver linje i en tekstfil:

I dette eksempel ønskede vi at udskrive antallet af felter eller kolonner i hver linje eller række eller post i en tekstfil i Ubuntu 20.04. For at vise dig metoden til at gøre det, har vi lavet tekstfilen vist på billedet nedenfor. Denne tekstfil indeholder mængden af ​​æbler pr. kilogram fra fem forskellige byer i Pakistan.





Da vi havde oprettet denne eksempeltekstfil, udførte vi følgende kommando for at udskrive antallet af felter fra hver linje i denne tekstfil i vores terminal:





$ awk ' { print NF } ' AppleRates.txt

I denne kommando har vi nøgleordet 'awk', der viser, at vi kører en AWK-kommando efterfulgt af 'print NF'-sætningen, der blot vil iterere gennem hver linje i måltekstfilen og udskrive antallet af felter separat for hver linje i tekstfilen. Endelig har vi navnet på den tekstfil (hvis felter skal tælles), som i vores tilfælde er 'AppleRatest.txt'.



Da vi havde nøjagtigt det samme antal felter for alle de fem linjer i vores tekstfil, dvs. 2, udskrives det samme antal som antallet af felter for alle tekstfillinjerne på grund af udførelse af denne kommando. Dette kan ses på billedet nedenfor:

Eksempel # 2: Udskriv antallet af felter fra hver linje i en tekstfil på en præsentabel måde:

Det output, der vises i eksemplet diskuteret ovenfor, kan også præsenteres pænt ved at vise linjenumrene og antallet af felter for hver linje i tekstfilen. Desuden kan vi også adskille linjenumrene fra antallet af felter med en hvilken som helst speciel karakter efter eget valg. Vi vil bruge den samme tekstfil, som vi har brugt til vores første eksempel for at vise dig dette. Vores kommando, der skal udføres i dette tilfælde, vil dog afvige en smule, og den er som følger:

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

I denne kommando har vi introduceret den indbyggede AWK-variabel 'NR', der blot vil udskrive linjenumrene på alle linjerne i vores måltekstfil. Desuden har vi brugt tre bindestreger, '—' som et specialtegn til at adskille linjenumrene fra antallet af felter i vores leverede tekstfil.

Dette let ændrede output af den samme tekstfil er vist på billedet nedenfor:

Eksempel # 3: Udskriv det første og det sidste felt fra hver linje i en tekstfil:

Udover blot at tælle antallet af felter i alle linjerne i en angivet tekstfil, kan den specielle 'NF'-variabel i AWK også bruges til at udtrække de faktiske værdier af det sidste felt fra den medfølgende tekstfil. Igen har vi brugt den samme tekstfil, som vi har brugt til vores første to eksempler. Vi ønsker dog at udskrive de faktiske værdier af vores tekstfils første og sidste felter i dette eksempel. Til det udførte vi følgende kommando:

$ awk ' { Print $1 , $NF } ' AppleRates.txt

Nøgleordet 'awk' efterfølges af 'print $1, $NF'-sætningen i denne kommando. Den specielle variabel '$1' er blevet brugt til at udskrive værdierne i det første felt eller den første kolonne i vores leverede tekstfil, mens '$NF' AWK-variablen er blevet brugt til at udskrive værdierne i det sidste felt eller den sidste kolonne af vores måltekstfil. Du skal bemærke her, at når vi bruger 'NF' AWK-variablen, som den er, så bruges den til at tælle antallet af felter på hver linje; men når det bruges med dollarsymbolet '$', vil det blot udtrække de faktiske værdier fra det sidste felt i den medfølgende tekstfil. Resten af ​​kommandoen er mere eller mindre den samme som for de kommandoer, der er blevet brugt til de to første eksempler.

I outputtet vist nedenfor kan du se, at de faktiske værdier fra det første og sidste felt i vores medfølgende tekstfil er blevet udskrevet på terminalen. Du kan se, at dette output stort set ligner outputtet fra 'cat'-kommandoen, udelukkende fordi vi kun havde to felter i vores medfølgende tekstfil; derfor på en måde blev indholdet af hele vores tekstfil udskrevet på terminalen som et resultat af udførelse af ovennævnte kommando.

Eksempel #4: Adskil posterne med manglende felter i en tekstfil:

Til tider er der nogle poster i en tekstfil med visse manglende felter, og du vil måske adskille disse poster fra dem, der er komplette i alle aspekter. Dette kan også gøres ved at bruge 'NF' AWK-variablen. Til det har vi lavet en tekstfil med navnet 'ExamMarks.txt', der indeholder eksamensresultaterne for fem forskellige studerende i tre forskellige eksamener sammen med deres navne. Men til den tredje eksamen var nogle af eleverne fraværende, hvorfor deres score manglede. Denne tekstfil er som følger:

For at skelne posterne med manglende felter fra posterne med de komplette felter, vil vi udføre kommandoen vist nedenfor:

$ awk ' { print NR, '--- > ', NF } ’ ExamMarks.txt

Denne kommando er den samme som den, vi har brugt til vores andet eksempel. Men fra outputtet af denne kommando vist i det følgende billede, kan du se, at den første og fjerde post er færdig, mens den anden, tredje og femte post indeholder manglende felter.

Konklusion:

Formålet med denne artikel var at forklare brugen af ​​den specielle 'NF' AWK-variabel. Vi diskuterede først kort, hvordan denne variabel virker, og derefter uddybede vi dette koncept godt ved hjælp af fire forskellige eksempler. Når du forstår alle de delte eksempler godt, vil du være i stand til at bruge 'NF' AWK-variablen til at tælle det samlede antal felter og udskrive de faktiske værdier af det sidste felt i den medfølgende fil.