Условный оператор
Awk поддерживает стандартный во многих языках программирования формат условного оператора if-then-else. Однострочный вариант оператора представляет собой ключевое слово if, за которым, в скобках, записывают проверяемое выражение, а затем — команду, которую нужно выполнить, если выражение истинно.
Например, есть такой файл с именем testfile:
10
15
6
33
45
Напишем скрипт, который выводит числа из этого файла, большие 20:
$ awk '{if ($1 > 20) print $1}' testfile
Однострочный оператор if
Если нужно выполнить в блоке if несколько операторов, их нужно заключить в фигурные скобки:
$ awk '{
if ($1 > 20)
{
x = $1 * 2
print x
}
}' testfile
Выполнение нескольких команд в блоке if
Как уже было сказано, условный оператор awk может содержать блок else:
$ awk '{
if ($1 > 20)
{
x = $1 * 2
print x
} else
{
x = $1 / 2
print x
}}' testfile
Условный оператор с блоком else
Ветвь else может быть частью однострочной записи условного оператора, включая в себя лишь одну строку с командой. В подобном случае после ветви if, сразу перед else, надо поставить точку с запятой:
$ awk '{if ($1 > 20) print $1 * 2; else print $1 / 2}' testfile
Условный оператор, содержащий ветви if и else, записанный в одну строку
Лето — время эзотерики и психологии! ☀️
Получи книгу в подарок из специальной подборки по эзотерике и психологии. И скидку 20% на все книги Литрес
ПОЛУЧИТЬ СКИДКУ