Wat is AWK NF?

Wat Is Awk Nf



De AWK-scripttaal heeft ook een reeks ingebouwde speciale variabelen voor een aantal vooraf gedefinieerde doelen. Een van die ingebouwde variabelen is 'NF', die zijn eigen vooraf gedefinieerde functionaliteit heeft. Dit artikel onderzoekt het doel van deze ingebouwde AWK-variabele door enkele relevante voorbeelden in Ubuntu 20.04 te demonstreren.

AWK NF in Ubuntu 20.04:

De 'NF' AWK-variabele wordt gebruikt om het aantal velden in alle regels van een geleverd bestand af te drukken. Deze ingebouwde variabele doorloopt alle regels van het bestand één voor één en drukt het aantal velden afzonderlijk af voor elke regel. Om deze functionaliteit goed te begrijpen, zult u de hieronder besproken voorbeelden moeten doorlezen.

Voorbeelden voor het demonstreren van het gebruik van AWK NF in Ubuntu 20.04:

De volgende vier voorbeelden zijn zo ontworpen dat ze u op een heel gemakkelijk te begrijpen manier het gebruik van AWK NF leren. Al deze voorbeelden zijn geïmplementeerd met behulp van het Ubuntu 20.04-besturingssysteem.







Voorbeeld # 1: Druk het aantal velden af ​​van elke regel van een tekstbestand:

In dit voorbeeld wilden we het aantal velden of kolommen van elke regel of rij of record van een tekstbestand afdrukken in Ubuntu 20.04. Om u te laten zien hoe u dit moet doen, hebben we het tekstbestand gemaakt dat wordt weergegeven in de onderstaande afbeelding. Dit tekstbestand bevat de tarieven van appels per kilo uit vijf verschillende steden van Pakistan.





Nadat we dit voorbeeldtekstbestand hadden gemaakt, voerden we de volgende opdracht uit om het aantal velden van elke regel van dit tekstbestand in onze terminal af te drukken:





$ awk ' { NF afdrukken } ’ AppleRates.txt

In deze opdracht hebben we het trefwoord 'awk' dat aangeeft dat we een AWK-opdracht uitvoeren, gevolgd door de instructie 'print NF' die eenvoudigweg elke regel van het doeltekstbestand doorloopt en het aantal velden afzonderlijk voor elke regel afdrukt. regel van het tekstbestand. Ten slotte hebben we de naam van dat tekstbestand (waarvan de velden moeten worden geteld), in ons geval 'AppleRatest.txt'.



Omdat we exact hetzelfde aantal velden hadden voor alle vijf regels van ons tekstbestand, d.w.z. 2, wordt hetzelfde aantal afgedrukt als het aantal velden voor alle tekstbestandregels als gevolg van het uitvoeren van deze opdracht. Dit is te zien op onderstaande afbeelding:

Voorbeeld # 2: druk het aantal velden van elke regel van een tekstbestand af op een representatieve manier:

De uitvoer die wordt weergegeven in het hierboven besproken voorbeeld kan ook mooi worden gepresenteerd door de regelnummers en het aantal velden van elke regel van het tekstbestand weer te geven. Bovendien kunnen we de regelnummers ook scheiden van het aantal velden met een speciaal teken naar keuze. We zullen hetzelfde tekstbestand gebruiken dat we voor ons eerste voorbeeld hebben gebruikt om u dit te laten zien. Onze opdracht die in dit geval moet worden uitgevoerd, zal echter enigszins verschillen en is als volgt:

$ awk ' { druk NR, '---', NF af } ’ AppleRates.txt

In deze opdracht hebben we de ingebouwde AWK-variabele 'NR' geïntroduceerd die eenvoudig de regelnummers van alle regels van ons doeltekstbestand afdrukt. Bovendien hebben we drie streepjes gebruikt, '-' als een speciaal teken om de regelnummers te scheiden van het aantal velden van ons geleverde tekstbestand.

Deze enigszins gewijzigde uitvoer van hetzelfde tekstbestand wordt weergegeven in de onderstaande afbeelding:

Voorbeeld # 3: druk de eerste en laatste velden af ​​van elke regel van een tekstbestand:

Naast het tellen van het aantal velden van alle regels van een aangeleverd tekstbestand, kan de speciale variabele 'NF' van AWK ook worden gebruikt om de werkelijke waarden van het laatste veld uit het aangeleverde tekstbestand te extraheren. Nogmaals, we hebben hetzelfde tekstbestand gebruikt dat we voor onze eerste twee voorbeelden hebben gebruikt. In dit voorbeeld willen we echter de werkelijke waarden van het eerste en laatste veld van ons tekstbestand afdrukken. Daarvoor hebben we de volgende opdracht uitgevoerd:

$ awk ' { afdrukken $ 1 , $ NF } ’ AppleRates.txt

Het sleutelwoord 'awk' wordt gevolgd door de instructie 'print $1, $NF' in deze opdracht. De speciale variabele '$1' is gebruikt om de waarden van het eerste veld of de eerste kolom van ons geleverde tekstbestand af te drukken, terwijl de variabele '$NF' AWK is gebruikt om de waarden van het laatste veld of de laatste kolom af te drukken van ons doeltekstbestand. U moet hier opmerken dat wanneer we de 'NF' AWK-variabele gebruiken zoals deze is, deze wordt gebruikt om het aantal velden van elke regel te tellen; wanneer het echter wordt gebruikt met het dollarsymbool '$', haalt het eenvoudig de werkelijke waarden uit het laatste veld van het geleverde tekstbestand. De rest van het commando is min of meer hetzelfde als dat van de commando's die voor de eerste twee voorbeelden zijn gebruikt.

In de onderstaande uitvoer kunt u zien dat de werkelijke waarden van het eerste en laatste veld van ons geleverde tekstbestand op de terminal zijn afgedrukt. Je kunt zien dat deze uitvoer vrijwel gelijk is aan de uitvoer van het commando 'cat', alleen omdat we maar twee velden in ons geleverde tekstbestand hadden; daarom werd in zekere zin de inhoud van ons hele tekstbestand op de terminal afgedrukt als resultaat van het uitvoeren van de bovengenoemde opdracht.

Voorbeeld # 4: Scheid de records met ontbrekende velden in een tekstbestand:

Soms zijn er enkele records in een tekstbestand met ontbrekende velden, en misschien wilt u die records scheiden van de records die in elk aspect compleet zijn. Dit kan ook worden gedaan door de AWK-variabele 'NF' te gebruiken. Daarvoor hebben we een tekstbestand gemaakt met de naam 'ExamMarks.txt' dat de examenscores van vijf verschillende studenten in drie verschillende examens bevat, samen met hun namen. Bij het derde examen waren echter enkele studenten afwezig waardoor hun scores ontbraken. Dit tekstbestand is als volgt:

Om de records met ontbrekende velden te onderscheiden van de records met de volledige velden, voeren we onderstaand commando uit:

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

Deze opdracht is dezelfde als die we voor ons tweede voorbeeld hebben gebruikt. Uit de uitvoer van deze opdracht die in de volgende afbeelding wordt weergegeven, kunt u echter zien dat de eerste en vierde records compleet zijn, terwijl de tweede, derde en vijfde records ontbrekende velden bevatten.

Conclusie:

Het doel van dit artikel was om het gebruik van de speciale variabele 'NF' AWK uit te leggen. We hebben eerst kort besproken hoe deze variabele werkt en daarna hebben we dit concept goed uitgewerkt aan de hand van vier verschillende voorbeelden. Zodra u alle gedeelde voorbeelden goed begrijpt, kunt u de 'NF' AWK-variabele gebruiken om het totale aantal velden te tellen en de werkelijke waarden van het laatste veld van het geleverde bestand af te drukken.