Какво е AWK NF?

Kakvo E Awk Nf



Скриптовият език AWK също има серия от вградени специални променливи, които да служат на някои предварително дефинирани цели. Една такава вградена променлива е „NF“, която има собствена предварително дефинирана функционалност. Тази статия ще изследва целта на тази вградена AWK променлива, като демонстрира някои подходящи примери в Ubuntu 20.04.

AWK NF в Ubuntu 20.04:

Променливата „NF“ AWK се използва за отпечатване на броя на полетата във всички редове на всеки предоставен файл. Тази вградена променлива преминава през всички редове на файла един по един и отпечатва броя на полетата отделно за всеки ред. За да разберете добре тази функционалност, ще трябва да прочетете примерите, обсъдени по-долу.

Примери за демонстриране на използването на AWK NF в Ubuntu 20.04:

Следващите четири примера са проектирани така, че да ви научат да използвате AWK NF по много лесен за разбиране начин. Всички тези примери са реализирани с помощта на операционната система Ubuntu 20.04.







Пример # 1: Отпечатайте броя на полетата от всеки ред на текстов файл:

В този пример искахме да отпечатаме броя на полетата или колоните на всеки ред или ред или запис на текстов файл в Ubuntu 20.04. За да ви покажем метода за това, създадохме текстовия файл, показан на изображението по-долу. Този текстов файл съдържа цените на ябълките за килограм от пет различни града в Пакистан.





След като създадохме този примерен текстов файл, изпълнихме следната команда, за да отпечатаме броя на полетата от всеки ред на този текстов файл в нашия терминал:





$ awk ' { печат NF } “ AppleRates.txt

В тази команда имаме ключовата дума „awk“, която показва, че изпълняваме AWK команда, последвана от израза „print NF“, който просто ще премине през всеки ред на целевия текстов файл и ще отпечата броя на полетата отделно за всяко ред на текстовия файл. И накрая, имаме името на този текстов файл (чиито полета трябва да се преброят), което в нашия случай е „AppleRatest.txt“.



Тъй като имахме абсолютно същия брой полета за всичките пет реда на нашия текстов файл, т.е. 2, същото число се отпечатва като броя на полетата за всички редове на текстовия файл поради изпълнението на тази команда. Това може да се види от изображението по-долу:

Пример # 2: Отпечатайте броя на полетата от всеки ред на текстов файл по представителен начин:

Резултатът, показан в примера, обсъден по-горе, също може да бъде представен добре чрез показване на номерата на редовете и броя на полетата на всеки ред от текстовия файл. Освен това можем също да отделим номерата на редовете от броя на полетата с произволен специален знак по наш избор. Ще използваме същия текстов файл, който използвахме за нашия първи пример, за да ви покажем това. Въпреки това, нашата команда, която трябва да бъде изпълнена в този случай, ще се различава леко и е както следва:

$ awk ' { печат NR, “---”, NF } “ AppleRates.txt

В тази команда въведохме вградената AWK променлива „NR“, която просто ще отпечата номерата на всички редове на нашия целеви текстов файл. Освен това използвахме три тирета, „—“ като специален знак, за да разделим номерата на редовете от броя на полетата на предоставения от нас текстов файл.

Този леко модифициран изход на същия текстов файл е показан на изображението по-долу:

Пример # 3: Отпечатайте първото и последното поле от всеки ред на текстов файл:

Освен просто преброяване на броя на полетата на всички редове на даден текстов файл, специалната променлива „NF“ на AWK може също да се използва за извличане на действителните стойности на последното поле от предоставения текстов файл. Отново използвахме същия текстов файл, който използвахме за първите два примера. Ние обаче искаме да отпечатаме действителните стойности на първото и последното поле на нашия текстов файл в този пример. За целта изпълнихме следната команда:

$ awk ' { печат $1 , $NF } “ AppleRates.txt

Ключовата дума „awk“ е последвана от израза „print $1, $NF“ в тази команда. Специалната променлива “$1” е използвана за отпечатване на стойностите на първото поле или първата колона на нашия предоставен текстов файл, докато променливата “$NF” AWK е използвана за отпечатване на стойностите на последното поле или последната колона от нашия целеви текстов файл. Трябва да забележите тук, че когато използваме променливата „NF“ AWK такава, каквато е, тогава тя се използва за преброяване на броя на полетата на всеки ред; обаче, когато се използва със символа за долар „$“, тогава той просто ще извлече действителните стойности от последното поле на предоставения текстов файл. Останалата част от командата е повече или по-малко същата като тази на командите, използвани за първите два примера.

В изхода, показан по-долу, можете да видите, че действителните стойности от първото и последното поле на нашия предоставен текстов файл са отпечатани на терминала. Можете да видите, че този изход е доста подобен на изхода на командата „cat“ само защото имахме само две полета в нашия предоставен текстов файл; следователно по някакъв начин съдържанието на целия ни текстов файл беше отпечатано на терминала в резултат на изпълнение на гореспоменатата команда.

Пример # 4: Разделяне на записите с липсващи полета в текстов файл:

Понякога има някои записи в текстов файл с определени липсващи полета и може да искате да отделите тези записи от тези, които са пълни във всеки аспект. Това може да се направи и с помощта на променливата „NF“ AWK. За целта създадохме текстов файл с име „ExamMarks.txt“, който съдържа изпитните резултати на пет различни студента в три различни изпита заедно с техните имена. За третия изпит обаче част от учениците отсъстваха, заради което оценките им липсваха. Този текстов файл е както следва:

За да различим записите с липсващи полета от записите с пълните полета, ще изпълним командата, показана по-долу:

$ awk ' { печат NR, “--- > ”, NF } “ ExamMarks.txt

Тази команда е същата като тази, която използвахме за нашия втори пример. Въпреки това, от изхода на тази команда, показан на следното изображение, можете да видите, че първият и четвъртият запис са завършени, докато вторият, третият и петият запис съдържат липсващи полета.

Заключение:

Целта на тази статия беше да обясни използването на специалната променлива AWK „NF“. Първо обсъдихме накратко как работи тази променлива и след това разработихме тази концепция добре с помощта на четири различни примера. След като разберете добре всички споделени примери, ще можете да използвате променливата „NF“ AWK, за да преброите общия брой полета и да отпечатате действителните стойности на последното поле на предоставения файл.