Читаем Linux и UNIX: программирование в shell. Руководство разработчика. полностью

М. Tansley05/99"48311Green84044
J. Lulu06/9948317green92426
P. Bunny02/9948Yellow123528
J. Troll07/994842Brown-3122626

Чтобы найти точное совпадение, воспользуйтесь оператором ==:

$ awk '$3 == "48"' grade.txt

P. Bunny 02/99 48 Yellow 12 35 28

Проверки на несовпадение и неравенство

Иногда требуется извлечь те строки, которые не соответствуют шаблону. Для этих целей предназначен оператор !~, выполняющий проверку на неравенство регулярному выражению. Давайте, например, выведем список всех учеников, не являющихся обладателями коричневого пояса:

$ awk '$0 !~ /Brown/' grade.txt

M. Tansley05/9948311Green84044
J. Lulu06/9948317green92426
P. Bunny02/9948Yellow123528

He забывайте, что по умолчанию утилита awk выводит на экран все записи, отвечающие указанному критерию отбора, поэтому нет необходимости задавать какое‑либо действие. Если вместо предыдущей команды указать

$ awk '$4 != "Brown"' grade.txt

получим ошибочный результат. Эта команда означает, что требуется найти строки, в которых четвертое поле не равно "Brown". Такому критерию удовлетворяют все строки в файле. Конечно, если нужно найти обладателей поясов, отличных от "Brown-2", можно применить следующую команду:

$ awk '$4 != "Brown-2"' grade.txt

M. Tansley05/9948311Green
84044
J. Lulu06/9948317green92426
P. Bunny02/9948Yellow123528
S. Trnll07/994842Brown-3122626

Обратите внимание на один важный момент: строка "Brown-2" заключена в двойные кавычки. Если этого не сделать, четвертое поле будет сравниваться с содержимым переменной Brown-2. Вряд ли в вашем интерпретаторе существует такая переменная, поэтому вместо нее будет подставлена пустая строга, и вы получите совершенно другой результат.

Проверка "меньше чем"

Допустим, нужно определить, кто из учеников не смог набрать максимального количества очков на соревновании. Для выполнения проверки достаточно сравнить набранный рейтинг (поле 6) с общей суммой возможных очков (поле 7). Также поместим в отчет небольшое сообщение.

$ awk '{if($6 < $7) print $1 " — try better at the next competition"}' grade.txt

M. Tansley — try better at the next competition J. Lulu — try better at the next competition

Проверка "меньше или равно"

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

$ awk '{if($6 <= $7) print $1}' grade.txt

M. Tansley

J. Lulu J. Troll

Проверка "больше чем"

Следующая команда формирует список лидеров соревнования:

$ awk '{if ($6 > $7) print $1}' grade.txt

L. Tansley P. Bunny

9.2.7. Логические операторы

Логические операторы позволяют формировать сложные выражения, позволяющие выполнять проверку нескольких условий. Существует три логических оператора:

&& И: чтобы результат был истинным, оба операнда должны быть истинными | | ИЛИ: чтобы результат был истинным, хотя бы один из операндов должен

быть истинным! НЕ: результат проверки инвертируется

Оператор логического И

Предположим, перед нами поставлена задача выяснить, кому был присвоен зеленый пояс в мае 1999 года. Строки, отвечающие этому условию, должны в первом поле содержать значение "05/99", а во втором — "Green":

$ awk '{if($2 == "05/99" && $4 == "Green") print $0}' grade.txt

M. Tansley 05/99 48311 Green 8 40 44

Оператор логического ИЛИ

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

$ awk '{if ($4 == "Yellow" ) || $4 ~ /Brown/} print $0}' grade.txt

P. Bunny02/9948Yellow123528
J. Troll07/994842Brown-3122626
L. Tansley05/994712Brown-2, 123028

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

$ awk '$4 ~ /Yellow|Brown/' grade.txt

P. Bunny02/9948Yellow123528
J. Troll07/994842Brown-3122626
L. Tansley05/994712Brown-2123028

9.2.8. Операторы присваивания и арифметические операторы

Перейти на страницу:

Похожие книги

Библия БДСМ. Полное руководство
Библия БДСМ. Полное руководство

Первое исчерпывающее пособие по БДСМ. Уникальный иллюстрированный гид для тех, кому просто любопытно, и для тех, кто уже в Теме. В этой книге известные педагоги и профессионалы ответили на все важные вопросы и раскрыли все интересующие вас темы: основные принципы, ролевые игры, господство, подчинение, фистинг, садизм, мазохизм, связывание, физическое воздействие, тантра необычного секса и многое другое. Если вы хоть раз задумывались о БДСМ, значит, эта книга то, что вам нужно. Она способна обучить, вдохновить и бросить вызов даже опытным игрокам. Не бойтесь экспериментировать, и добро пожаловать в мир сексуальных приключений!

Литагент «5 редакция» , Тристан Таормино

Зарубежная образовательная литература, зарубежная прикладная, научно-популярная литература / Руководства / Дом и досуг / Образовательная литература / Словари и Энциклопедии