П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 4072 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 6722 раз(а).

Учебник HTML.
Просмотров 3693 раз(а).

Руководство по PHP5.
Просмотров 5966 раз(а).

Хостинг через призму DNS.
Просмотров 4773 раз(а).

Подборка текстов стандартных документов.
Просмотров 56218 раз(а).

Учебник PHP - Самоучитель
Просмотров 3665 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 8250 раз(а).

Внешние атаки...
Просмотров 4517 раз(а).

Учебник PHP.
Просмотров 3154 раз(а).

SSI в примерах.
Просмотров 161 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Руководство пользователя для GNU Awk

8. Образцы и действия

8.1 Элементы образцов

8.1.4 Указание диапазонов записей с помощью образцов

Образец для диапазона образуется двумя образцами, разделенными запятой, вида `begpat, endpat'. Он определяет диапазон последовательных входных записей. Первый образец, begpat, определяет начало диапазона, а второй, endpat, определяет его конец.

Например,

awk '$1 == "on", $1 == "off"' печатает каждую запись внутри пар

`on'/`off', включая граничные случаи.

Образец диапазона начинает работу сравнением begpat с каждой входной записью; если запись соответствует begpat, образец диапазона переходит в состояние "on", а запись считается соответствующей диапазону. Пока остается состояние "on", образец автоматически соответствует каждой прочтенной записи. Также каждая читаемая запись проверяется на соответствие с endpat; если оно имеет место, образец диапазона переходит опять в состояние "off" для следующих записей, и затем опять начинается проверка на begpat для каждой записи.

Запись, которая включает образец диапазона, и та, которая его выключает, обе соответствуют образцу диапазона. Если вы не хотите учитывать эти записи, вы можете написать операторы if в правилах действия, чтобы отделить их от записей, представляющих интерес для вас. Для образца возможно быть включенным и выключенным одной и той же записью, если она удовлетворяет обоим условиям. Тогда действия выполняются только для этой записи.

Например, предположим что вы имеете текст между двумя одинаковыми маркерами (скажем, между символами `%'), который вы хотите игнорировать. Вы можете скомбинировать образец диапазона, который описывает выделенный текст, с оператором next (он еще не рассматривался, см. раздел 9.7 [Оператор next], стр. 111), который побуждает awk опустить всякую дальнейшую обработку текущей записи и начать с начала обработку следующей записи.

Такая программа может как будто выглядеть так:

/^%$/,/^%$/ - next ""
- print ""

Но эта программа терпит неудачу, потому что образец диапазона и включается и выключается первой строкой с `%' на ней. Для выполнения задачи нужно написать программу так, используя флажок:

/^%$/ - skip = ! skip; 

next "" skip == 1 - next "" # пропустить строки с `skip' set

Заметим что в образце диапазона `,' имеет низший приоритет (вычисляется последней). Так, например, следующая программа пытается скомбинировать образец диапазона с другим, более простым тестом:

echo Yes -- awk '/1/,/2/ ---- /Yes/'

Автор этой программы предполагал, что она будет работать как

`(/1/,/2/) ---- /Yes/'. Однако, awk интерпретирует ее как
 `/1/, (/2/ ---- /Yes/)'. Это не может быть изменено или работать дальше;
 
образцы диапазонов не комбинируются с другими образцами.

Назад | Вперед
Содержание (общее) | Содержание раздела | Содержание подраздела



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru