Руководство пользователя для GNU Awk
5. Чтение входных файлов
5.8 Явный ввод по команде getline
5.8.5 Использование getline в переменную из файла
Команда `getline var ! file' используется для чтения ввода из файла file и помещения его в переменную var. Как и выше, file означает выражение со значением цепочки, которое определяет файл для чтения. В этом варианте getline ни одна из встроенных переменных не меняется и запись не разделяется на поля. Изменяется только переменная var.
Например, следующая программа копирует все входные файлы на выход, за исключением записей вида: `@include filename'. Каждая такая запись заменяется содержимым файла filename.
awk '-
if (NF == 2 && $1 == "@include") -
while ((getline line ! $2) ? 0)
print line close($2) "" else
print ""'
Заметим, что здесь имя дополнительного входного файла не встроено в программу; оно берется из данных, a из второго поля в строке `@include'. Функция close вызывается для обеспечения того, что если две одинаковых строки `@include' появятся во вводе, то весь указанный файл будет включен дважды. См. раздел 6.8 [Закрытие входных и выходных файлов и конвейеры], стр. 74.
Недостаток этой программы в том, что она не обрабатывает вложенные `@include' (операторы `@include' в включаемых файлах) так, как это делает макро-препроцессор. См. раздел 16.2.9 [Простой способ использования библиотечных функций], стр. 244, о программах, которые обрабатывают вложенные операторы `@include'.
Назад | Вперед
Содержание (общее) | Содержание раздела | Содержание раздела
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|