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

О проекте

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

MySQL

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

Хостинг

Другое








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

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

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

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

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

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

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

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

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

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

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

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



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





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