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

О проекте

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

MySQL

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

Хостинг

Другое








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

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

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

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

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

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

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

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

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

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

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

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



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





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

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

5.8 Явный ввод по команде getline

5.8.6 Использование getline из конвейера

Можно передавать конвейером (pipe) выход от command к getline, используя `command -- getline'. В таком случае слово command исполняется как команда оболочки и ее выход передается в awk для использования в качестве ввода. Эта форма getline читает за раз одну запись из конвейера.

Например, следующая программа копирует ее ввод на вывод, за исключением строк, которые начинаются с `@execute'; такие строки заменяются выходом, полученным при выполнении остатка строки в качестве команды оболочки.

awk '-
if ($1 == "@execute") -
tmp = substr($0, 10) while ((tmp -- getline) ? 0)
print close(tmp) "" else
print ""'

Функция close вызывается для того, чтобы в случае двух идентичных строк `@execute' во входе команда command выполнялась для каждой из них. См. раздел 6.8 [Закрытие входных и выходных файлов и конвейеры], стр. 74.

Пусть задан ввод:

foo bar baz @execute who bletch

программа может выдать:

foo bar baz arnold ttyv0 
Jul 13 14:22 miriam ttyp0 
Jul 13 14:23 (murphy:0)
bill ttyp1 
Jul 13 14:23 (murphy:0) bletch

Заметим, что эта программа выполняет команду who и печатает результат. (Если вы сами запустите эту программу, вы получите, конечно, другой результат, показывающий вам, кто сейчас работает на вашей системе.)

Этот вариант getline разделяет записи на поля, устанавливает значение NF и пере вычисляет значение $0. Значения NR и FNR не меняются. В соответствии с POSIX, `expression -- getline' не определена, если expression содержит не заключенные в скобки операторы, отличные от `$'; например, `"echo " "date" -- getline' не определена, так как конкатенация не заключена в скобки, нужно писать `("echo " "date") -- getline', чтобы программа была переносимой на другие реализации awks. (Бывает, что gawk ее выполнит правильно, но на это не надо полагаться. Во всяком случае, скобки делают программу легче читаемой.)

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



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





Copyright © 2005-2016 Project.Net.Ru