Что такое AWK NF?

Cto Takoe Awk Nf



Язык сценариев AWK также имеет ряд встроенных специальных переменных, которые служат некоторым предопределенным целям. Одной из таких встроенных переменных является «NF», которая имеет свою предопределенную функциональность. В этой статье мы рассмотрим назначение этой встроенной переменной AWK, продемонстрировав некоторые соответствующие примеры в Ubuntu 20.04.

AWK NF в Ubuntu 20.04:

Переменная AWK «NF» используется для печати количества полей во всех строках любого предоставленного файла. Эта встроенная переменная перебирает все строки файла одну за другой и печатает количество полей отдельно для каждой строки. Чтобы хорошо понять эту функциональность, вам придется прочитать примеры, обсуждаемые ниже.

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

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







Пример № 1: Распечатайте количество полей из каждой строки текстового файла:

В этом примере мы хотели напечатать количество полей или столбцов в каждой строке, строке или записи текстового файла в Ubuntu 20.04. Чтобы показать вам, как это сделать, мы создали текстовый файл, показанный на изображении ниже. Этот текстовый файл содержит цены на яблоки за килограмм из пяти разных городов Пакистана.





После того, как мы создали этот пример текстового файла, мы выполнили следующую команду, чтобы напечатать количество полей из каждой строки этого текстового файла в нашем терминале:





$ аук ' { распечатать НФ } AppleRates.txt

В этой команде у нас есть ключевое слово «awk», которое показывает, что мы запускаем команду AWK, за которой следует оператор «print NF», который просто перебирает каждую строку целевого текстового файла и печатает количество полей отдельно для каждого. строка текстового файла. Наконец, у нас есть имя этого текстового файла (поля которого должны быть подсчитаны), в нашем случае это «AppleRatest.txt».



Поскольку у нас было одинаковое количество полей для всех пяти строк нашего текстового файла, т. е. 2, такое же число печатается как количество полей для всех строк текстового файла из-за выполнения этой команды. Это видно из изображения ниже:

Пример № 2: вывести количество полей из каждой строки текстового файла в презентабельном виде:

Вывод, отображаемый в рассмотренном выше примере, также может быть красиво представлен путем отображения номеров строк и количества полей в каждой строке текстового файла. Кроме того, мы также можем отделить номера строк от количества полей любым специальным символом по нашему выбору. Мы будем использовать тот же текстовый файл, который мы использовали для нашего первого примера, чтобы показать вам это. Однако наша команда, которая должна быть выполнена в этом случае, будет немного отличаться, и она будет выглядеть следующим образом:

$ аук ' { печатать NR, «---», NF } AppleRates.txt

В этой команде мы ввели встроенную переменную AWK «NR», которая будет просто печатать номера всех строк нашего целевого текстового файла. Кроме того, мы использовали три дефиса, «-» в качестве специального символа, чтобы отделить номера строк от количества полей предоставленного нами текстового файла.

Этот слегка измененный вывод того же текстового файла показан на изображении ниже:

Пример № 3: Печать первого и последнего полей из каждой строки текстового файла:

Помимо простого подсчета количества полей во всех строках предоставленного текстового файла, специальная переменная «NF» AWK также может использоваться для извлечения фактических значений последнего поля из предоставленного текстового файла. Опять же, мы использовали тот же текстовый файл, что и в первых двух примерах. Однако в этом примере мы хотим напечатать фактические значения первого и последнего полей нашего текстового файла. Для этого мы выполнили следующую команду:

$ аук ' { Распечатать 1 доллар , $НФ } AppleRates.txt

В этой команде за ключевым словом «awk» следует оператор «print $1, $NF». Специальная переменная «$1» использовалась для печати значений первого поля или первого столбца нашего предоставленного текстового файла, тогда как переменная «$NF» AWK использовалась для печати значений последнего поля или последнего столбца. нашего целевого текстового файла. Здесь вы должны заметить, что когда мы используем переменную AWK «NF» как таковую, она используется для подсчета количества полей в каждой строке; однако, когда он используется с символом доллара «$», он просто извлекает фактические значения из последнего поля предоставленного текстового файла. Остальная часть команды более или менее такая же, как и у команд, которые использовались в первых двух примерах.

В выводе, показанном ниже, вы можете видеть, что фактические значения из первого и последнего полей нашего предоставленного текстового файла были напечатаны на терминале. Вы можете видеть, что этот вывод очень похож на вывод команды «cat» только потому, что у нас было только два поля в предоставленном нами текстовом файле; таким образом, содержимое всего нашего текстового файла было напечатано на терминале в результате выполнения вышеупомянутой команды.

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

Иногда в текстовом файле есть записи с некоторыми отсутствующими полями, и вы можете захотеть отделить эти записи от тех, которые полны во всех аспектах. Это также можно сделать с помощью переменной AWK «NF». Для этого мы создали текстовый файл с именем «ExamMarks.txt», который содержит экзаменационные баллы пяти разных студентов на трех разных экзаменах вместе с их именами. Однако на третьем экзамене часть студентов отсутствовала, из-за чего их баллы отсутствовали. Этот текстовый файл выглядит следующим образом:

Чтобы отличить записи с отсутствующими полями от записей с полными полями, мы выполним команду, показанную ниже:

$ аук ' { напечатать NR, “--- > », НФ } ’ ExamMarks.txt

Эта команда такая же, как та, которую мы использовали для нашего второго примера. Однако из вывода этой команды, показанного на следующем рисунке, видно, что первая и четвертая записи заполнены, тогда как вторая, третья и пятая записи содержат пропущенные поля.

Вывод:

Цель этой статьи состояла в том, чтобы объяснить использование специальной переменной AWK «NF». Сначала мы кратко обсудили, как работает эта переменная, а затем хорошо развили эту концепцию с помощью четырех разных примеров. Как только вы хорошо поймете все общие примеры, вы сможете использовать переменную AWK «NF» для подсчета общего количества полей и печати фактических значений последнего поля предоставленного файла.