
Когда вы просматриваете все примеры Awk, которые мы рассмотрели до сих пор, с самого начала AWK серия, вы заметите, что все команды в различных примерах выполняются последовательно, то есть одна за другой. Но в определенных ситуациях мы можем захотеть запустить операции фильтрации текста основанный на некоторых условиях, вот где применяется подход операторов управления потоком.
В Программирование на AWK и к ним относятся:
Однако в рамках этой серии мы подробно остановимся на: если еще
, для
, пока
и делать пока
заявления. Помните, что мы уже прошли как использовать следующий оператор в части 6 этого AWK серия.
Ожидаемый синтаксис если заявление
похож на оболочку если заявление:
если (условие1) {действия1. } else {actions2. }
В приведенном выше синтаксисе condition1
condition2
- выражения Awk, и действия1
и действия2
выполняются команды Awk при выполнении соответствующих условий.
Когда condition1 удовлетворен, то есть это правда, тогда действия1 выполняется и если заявление выходит, иначе действия2 выполняется.
В если заявление также может быть расширен до если-еще-если-еще
заявление, как показано ниже:
если (условие1) {действия1. } иначе, если (условия2) {действия2. } else {actions3. }
Для формы выше, если condition1 верно, тогда действия1 выполняется и если заявление выходит, иначе condition2 оценивается, и если это правда, то действия2 выполняется и если заявление выходы. Однако когда condition2 тогда ложно, действия3 выполняется и если заявление выходы.
Вот пример использования если заявления, у нас есть список пользователи и их возраст хранится в файле, users.txt.
Мы хотим напечатать инструкцию, в которой указывается имя пользователя и возраст пользователя меньше или больше 25 лет.
[электронная почта защищена] ~ $кошка users.txt
Сара L 35 F. Аарон Кили 40 М. Джон Ду 20 М. Кили Сет 49 млн
Мы можем написать короткий сценарий оболочки для выполнения нашей работы, описанной выше, вот содержание сценария:
#! / bin / bash. awk '{if ($ 3 <= 25) {print "User", $ 1, $ 2, "меньше 25 лет."; } else {print "Пользователь", $ 1, $ 2, "старше 25 лет"; } } '~ / users.txt.
Затем сохраните файл и выйдите, сделайте скрипт исполняемым и запустите его следующим образом:
$ chmod + x test.sh. $ ./test.sh.
Пользователю Саре Л. больше 25 лет. Пользователю Аарону Кили больше 25 лет. Пользователю Джону Ду меньше 25 лет. Пользователю Кили Сету больше 25 лет.
Если вы хотите выполнить несколько команд Awk в цикле, тогда для заявления предлагает подходящий способ сделать это с помощью синтаксиса ниже:
Здесь подход просто определяется использованием счетчика для управления выполнением цикла, сначала вам нужно инициализировать счетчик, затем запустить его с тестовым условием, если оно истинно, выполнить действия и, наконец, увеличить счетчик. Цикл завершается, когда счетчик не удовлетворяет условию.
for (встречная инициализация; тест-условие; counter-increment) {действия. }
Следующая команда Awk показывает, как для заявления работает, где мы хотим напечатать числа 0-10:
$ awk 'BEGIN {for (counter = 0; counter <= 10; counter ++) {print counter}}'
0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Обычный синтаксис в то время как заявление как следует:
while (условие) {действия. }
Условие - это выражение Awk, а действия - это строки команд Awk, выполняемых, когда условие истинно.
Ниже приведен сценарий, иллюстрирующий использование в то время как заявление напечатать числа 0-10:
#! / bin / bash. awk 'НАЧАТЬ {counter = 0; while (counter <= 10) {счетчик печати; счетчик + = 1; } }
Сохраните файл и сделайте скрипт исполняемым, затем запустите его:
$ chmod + x test.sh. $ ./test.sh.
0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Это модификация в то время как заявление выше, со следующим базовым синтаксисом:
делать {действия. } while (условие)
Небольшая разница в том, что под делать пока, команды Awk выполняются до оценки условия. Используя тот же пример под в то время как заявление выше, мы можем проиллюстрировать использование делать пока изменив команду Awk в test.sh сценарий следующим образом:
#! / bin / bash awk 'НАЧАТЬ {counter = 0; делать {печатать счетчик; счетчик + = 1; } while (counter <= 10)} '
После изменения скрипта сохраните файл и выйдите. Затем сделайте скрипт исполняемым и выполните его следующим образом:
$ chmod + x test.sh. $ ./test.sh.
0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Это не исчерпывающее руководство по операторам управления потоком Awk, как я уже упоминал ранее, есть несколько других операторы управления потоком в Awk.
Тем не менее, эта часть AWK серия должен дать вам четкое фундаментальное представление о том, как можно контролировать выполнение команд Awk в зависимости от определенных условий.
Вы также можете подробнее рассказать об остальных операторах управления потоком, чтобы лучше понять предмет. Наконец, в следующем разделе серии Awk мы перейдем к написанию скриптов Awk.