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

О проекте

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

MySQL

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

Хостинг

Другое








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

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

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

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

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

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

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

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

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

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

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

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



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





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

5. Чтение входных файлов

5.2 Обследование полей

Когда awk читает входную запись, она автоматически разделяется интерпретатором на части, называемые полями. По умолчанию, поля разделяются пробелами, как слова в строке. Пробел в строке awk означает один или более пробелов, знаков tabs или newlines; другие символы, такие как formfeed и пр., которые имеют смысл пробелов (whitespace) в других языках, в awk не считаются таковыми. Назначение полей --- облегчить доступ к соответствующим частям записи. Если вы не хотите этим пользоваться, вы можете оперировать с целой записью, но поля --- это то, что делает простые программы awk очень удобными. Для ссылки на поле в awk-пррограмме используют знак доллара,

 `$', с номером нужного поля после него. 
 Так, $1 есть ссылка на первое поле,
 
 $2 --- на второе и т.д. 

 Предположим, строка ввода есть:
 
 This seems like a pretty nice example.

Здесь первое поле, или $1, есть `This'; 
второе поле, или $2, есть `seems'; и т.д. 
Заметим, что последнее поле, $7, есть  `example.'. 
Так как нет пробела
между `e' и `.', точка входит состав седьмого поля.

Значение встроенной переменной NF есть количество полей в текущей записи. awk обновляет значение NF автоматически при каждом чтении записи. Независимо от количества полей, последнее поле записи может быть представлено как $NF. Таким образом, в предыдущем примере $NF будет то же, что и $7, т.е. `example.'. Как это работает, объясняется ниже (см. раздел 5.3 [Непостоянные номера полей], стр. 41). Если вы пытаетесь сослаться на поле после последнего, $8, когда запись имеет только 7 полей, вы получаете пустую цепочку.

В POSIX awk символы newline не рассматриваются как пробелы (whitespace) для разделения полей. $0, что выглядит как ссылка на " нулевое" поле, представляет специальный случай: она представляет всю входную запись. $0 используется, когда вы не заинтересованы в поляхs.

Приведем несколько примеров.

$ awk '$1 ~ /foo/ - print $0 ""' BBS-list

a fooey 555-1234 2400/1200/300 B 
a foot 555-6699 1200/300 B
a macfoo 555-6480 1200/300 A 
a sabafoo 555-2127 1200/300 C

Этот пример печатает каждую запись из файла `BBS-list', у которой первое поле содержит цепочку `foo'. Оператор `~' называется оператор соответствия (см. раздел 4.1 [Как использовать регулярные выражения], стр. 23); он проверяет соответствие цепочки (здесь это поле $1) данному регулярному выражению. Следующий пример ищет `foo' в целой записи и печатает первое и последнее поля каждой входной записи, удовлетворяющей такому соответствию:

$ awk '/foo/ - print $1, $NF ""' BBS-list
a fooey B 
a foot B 
a macfoo A 
a sabafoo C

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



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





Copyright © 2005-2016 Project.Net.Ru