П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
                                                 
Главная

О проекте

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

MySQL

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

Хостинг

Другое







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

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

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

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

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

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

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

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

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

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

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

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



 
 



Руководство пользователя для 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-2011 Project.Net.Ru


Фильм Коко Шанель смотреть онлайн