ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как использовать команду ‘next’ с Awk в Linux

Как использовать команду ‘next’ с Awk в Linux

В этой статьи мы углубимся в команду next и посмотрим, как ее можно использовать для оптимизации выполнения вашего скрипта, поскольку эта команда особенно полезна для пропуска ненужных шагов при обработке ваших данных.

 

Что такое команда next?

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

 

Пример 1: помечение товаров в зависимости от количества

Давайте начнем с практического примера, рассмотрев файл с именем food_list.txt со следующим содержимым.

Food List Items
No      Item_Name               Price           Quantity
1       Mangoes                 $3.45              5
2       Apples                  $2.45              25
3       Pineapples              $4.45              55
4       Tomatoes                $3.45              25
5       Onions                  $1.45              15
6       Bananas                 $3.45              30

 

Рассмотрите возможность запуска следующей команды, которая будет помечать продукты питания, количество которых меньше или равно 20, со знаком (*) в конце каждой строки:

awk '$4 <= 20 { printf "%s\t%s\n", $0,"*" ; } $4 > 20 { print $0 ;}' food_list.txt
Как использовать команду ‘next’ с Awk в LinuxПомечаем элементы в зависимости от количества

Приведенная выше команда на самом деле работает следующим образом:

 

Проблема:

Но здесь есть одна проблема, когда выполняется первое выражение, строка, которую мы хотим пометить, печатается с помощью: { printf "%s\t%s\n", $0,"**" ; } а затем на том же шаге также проверяется второе выражение, что приводит к потере времени.

Таким образом, нет необходимости выполнять второе выражение $4 > 20 снова после печати уже отмеченных строк, которые были напечатаны с использованием первого выражения.

 

Оптимизированная команда с использованием next

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

awk '$4 <= 20 { printf "%s\t%s\n", $0,"*" ; next; } $4 > 20 { print $0 ;}' food_list.txt
Как использовать команду ‘next’ с Awk в LinuxОптимизированная команда с использованием next

Вот как это работает:

 

Пример 2: Фильтрация и форматирование данных

Рассмотрим файл data.txt со следующим содержимым:

ID   Name        Age   Score
1    Alice       30    85
2    Bob         25    90
3    Charlie     35    70
4    David       28    92

 

Если вы хотите печатать только записи с результатом выше 80 и форматировать их как “Name: [Name]Score: [Score]“, используйте:

awk '$4 > 80 { printf "Name: %s, Score: %d\n", $2, $4; next; }' data.txt

Печать записей с оценками

 

Выводы

Использование команды next в awk – это мощный способ оптимизировать обработку данных, избегая ненужных вычислений. Пропуская остальную часть скрипта для строк, которые уже были обработаны, вы делаете свои awk-скрипты более эффективными и быстрыми.

Exit mobile version