Поиск по сайту:
Солнце — шириною в ступню человека (Гераклит Эфесский).

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

19.08.2024
Как использовать команду ‘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Помечаем элементы в зависимости от количества

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

  • Сначала проверяется, является ли количество, четвертое поле каждой строки ввода, меньше или равно 20, если значение соответствует этому условию, оно печатается и помечается (*) знаком в конце с использованием выражения one: $4 <= 20
  • Во-вторых, она проверяет, больше ли четвертого поля каждой строки ввода, чем 20, и если строка соответствует условию, она печатается с использованием выражения two: $4 > 20.

 

Читать  Сгенерируйте случайный пароль в Ubuntu 20.04

Проблема:

Но здесь есть одна проблема, когда выполняется первое выражение, строка, которую мы хотим пометить, печатается с помощью: { 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

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

  • Когда строка удовлетворяет условию $4 <= 20, она выводит строку со звездочкой, а затем пропускает оставшиеся действия для этой строки, переходя непосредственно к следующей строке.
  • Это предотвращает проверку $4 &gtl 20 условия для уже обработанных строк.

 

Пример 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-скрипты более эффективными и быстрыми.

Читать  Как анализировать двоичные файлы ELF с помощью Binsider в Linux

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
Мир музыки, особенно гитарной, постоянно развивается. Цифровые инструменты становятся все…

Спасибо!

Теперь редакторы в курсе.