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

О проекте

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

MySQL

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

Хостинг

Другое








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

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

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

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

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

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

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

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

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

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

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

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



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



Детальное описание велосипеды в дубне тут.


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

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

5.5.2 Использование регулярных выражений для разделения полей

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

Например, присваивание:

FS = ", "t"

делает каждую часть входной строки, состоящую из запятой с последующим пробелом и tab, разделителем полей. (`"t' есть управляющая последовательность, которая обозначает знак tab, см. раздел 4.2 [Управляющие последовательности], стр. 24, содержащий полный список управляющих последовательностей.)

А вот менее тривиальный пример регулярного выражения. Предположим, вам нужно иметь разделителями отдельные пробелы, как выше для этого использовались отдельные запятые. Вы можете присвоить FS "[ ]" (левая квадратная скобка, пробел, правая квадратная скобка). Это регулярное выражение соответствует единственному пробелу и ничему другому (см. Главу 4 [Регулярные выражения], стр. 23).

Имеется важная разница между двумя случаями: `FS = " "' (одиночный пробел) и `FS = "[ "t"n]+"' (левая квадратная скобка, пробел, обратный слеш, "t", обратный слеш, "n", правая квадратная скобка, составляющие регулярное, выражение, соответствующее одному или более пробелам, tab или newline). Для обоих FS поля разделяются группами пробелов, tab и/или newline. Однако, если значение FS есть " ", awk сначала убирает из записи ведущие и завершающие белые пробелы, а затем решает, как расположены записи.

Например, такой конвейер напечатает `b':

$ echo ' a b c d ' -- awk '- print $2 ""'
a b

Однако, следующий конвейер напечатает `a' (заметьте дополнительные пробелы вокруг каждой буквы):

$ echo ' a b c d ' -- awk 
	'BEGIN - FS = "[ "t]+" "" ? - print $2 ""'
a a

В этом случае первое поле пусто. Удаление ведущих или завершающих белых пробелов происходит каждый раз, когда пере вычисляется $0.

Например, рассмотрите такой конвейер:

$ echo ' a b c d' -- awk '- print; 
$2 = $2; 
print ""'
a a b c d
a a b c d

Первый оператор печати печатает запись как она прочиталась, с нетронутым ведущим белым пробелом. Присваивание $2 перестраивает $0 посредством конкатенации вместе от $1 до $NF, разделенных посредством значения OFS. Поскольку ведущие белые пробелы игнорируются при нахождении $1, они не служат частью нового $0. Окончательно, последний оператор печати печатает новую $0.

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



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





Copyright © 2005-2016 Project.Net.Ru