3 СОДЕРЖАНИЕ ЛИСТ 1. ОБЩИЕ СВЕДЕНИЯ О СИСТЕМЕ UNIX . . . . . . . . . . . 10 1.1. Основные функции и компоненты системы UNIX . . . 10 1.2. Ядро . . . . . . . . . . . . . . . . . . . . . . 10 1.3. shell . . . . . . . . . . . . . . . . . . . . . . 11 1.4. Команды . . . . . . . . . . . . . . . . . . . . . 11 1.4.1. Что делают команды . . . . . . . . . . . . . . 11 1.4.2. Как выполнять команды . . . . . . . . . . . . . 12 1.5. Файловая система . . . . . . . . . . . . . . . . 13 1.5.1. Обыкновенные файлы . . . . . . . . . . . . . . 13 1.5.2. Справочники . . . . . . . . . . . . . . . . . . 13 1.5.3. Специальные файлы . . . . . . . . . . . . . . . 14 1.5.4. Символические каналы связи . . . . . . . . . . 14 1.6. Расположение системы . . . . . . . . . . . . . . 14 1.7. Принятые соглашения . . . . . . . . . . . . . . . 15 2. ОСНОВНЫЕ СВЕДЕНИЯ ДЛЯ ПОЛЬЗОВАТЕЛЕЙ UNIX . . . . . 16 2.1. Терминал . . . . . . . . . . . . . . . . . . . . 16 2.2. Требуемые для установки терминальные характеристики . . . . . . . . . . . . . . . . . . . 16 2.3. Характеристики клавиатуры . . . . . . . . . . . . 17 2.4. Соглашения по вводу . . . . . . . . . . . . . . . 17 2.5. Подсказка команды . . . . . . . . . . . . . . . . 18 2.6. Исправление ошибок ввода . . . . . . . . . . . . 18 2.6.1. Стереть текущую строку: знак @ . . . . . . . . 18 2.6.2. Стереть последний введенный символ: <^h> и. . . . . . . . . . . . . . . . . . . . 19 2.6.3. Переназначение функции удаления . . . . . . . . 19 2.7. Использование специальных символов как буквенных . . . . . . . . . . . . . . . . . . . . . . 20 2.8. Скорость . . . . . . . . . . . . . . . . . . . . 20 2.9. Останов команд . . . . . . . . . . . . . . . . . 20 2.10. Использование символов управления . . . . . . . 21 2.11. Получение регистрационного имени . . . . . . . . 21 2.12. Связь с системой UNIX . . . . . . . . . . . . . 22 2.13. Процедура регистрации . . . . . . . . . . . . . 22 2.14. Пароль . . . . . . . . . . . . . . . . . . . . . 22 2.15. Возможные проблемы при регистрации . . . . . . . 24 2.16. Простые команды . . . . . . . . . . . . . . . . 25 2.17. Выход из системы . . . . . . . . . . . . . . . . 26 3. ФАЙЛОВАЯ СИСТЕМА . . . . . . . . . . . . . . . . . 27 3.1. Структура файловой системы . . . . . . . . . . . 27 3.2. Ваш собственный справочник . . . . . . . . . . . 27 3.3. Текущий справочник . . . . . . . . . . . . . . . 28 3.4. Имя пути . . . . . . . . . . . . . . . . . . . . 28 3.4.1. Полное имя пути . . . . . . . . . . . . . . . . 29 3.4.2. Родственное имя пути . . . . . . . . . . . . . 29 3.5. Правила именования справочников и файлов . . . . 30 3.6. Организация справочника . . . . . . . . . . . . . 31 3.6.1. Команда mkdir - создать справочник . . . . . . 31 3.6.2. Команда ls - напечатать содержимое справочника . . . . . . . . . . . . . . . . . . . . . 31 3.6.2.1. Часто используемые ключи команды ls . . . . . 33 3.7. Команда cd - изменить текущий справочник . . . . 34 3.8. Команда rmdir - удалить справочник . . . . . . . 35 3.9. Доступ к файлу и работа с ним . . . . . . . . . . 36 3.10. Основные команды . . . . . . . . . . . . . . . . 36 4 3.10.1. Команды cat, pg, pr - распечатать содержимое файла . . . . . . . . . . . . . . . . . . 36 3.10.1.1. Команда cat . . . . . . . . . . . . . . . . 36 3.10.1.2. Команда pg . . . . . . . . . . . . . . . . . 37 3.10.1.3. Команда pr . . . . . . . . . . . . . . . . . 39 3.10.2. Команда cp - сделать копию файла . . . . . . . 40 3.10.3. Команда mv - переименование файла . . . . . . 41 3.10.4. Команда rm - удалить файл . . . . . . . . . . 42 3.10.5. Команда wc - подсчет строк, слов и символов . . . . . . . . . . . . . . . . . . . . . . 42 3.10.6. Команда chmod - изменить статус файла . . . . 43 3.10.6.1. Как определить права . . . . . . . . . . . . 44 3.10.6.2. Как изменить существующие права . . . . . . 45 3.10.6.3. Альтернативный метод . . . . . . . . . . . . 46 3.10.7. Дополнительные команды . . . . . . . . . . . . 46 3.10.7.1. Команда diff . . . . . . . . . . . . . . . . 47 3.10.7.2. Команда grep . . . . . . . . . . . . . . . . 48 3.10.7.3. Команда sort . . . . . . . . . . . . . . . . 48 4. ОБЗОР ПРОГРАММНЫХ СРЕДСТВ . . . . . . . . . . . . . 50 4.1. Управление офисом системы . . . . . . . . . . . . 50 4.2. Редактирования текста . . . . . . . . . . . . . . 50 4.2.1. Что такое редактор текста . . . . . . . . . . . 50 4.2.2. Как работает текстовый редактор . . . . . . . . 50 4.2.2.1. Буфера редактора текста . . . . . . . . . . . 50 4.2.3. Режимы . . . . . . . . . . . . . . . . . . . . 51 4.2.4. Построчный редактор . . . . . . . . . . . . . . 51 4.2.5. Экранный редактор . . . . . . . . . . . . . . . 51 4.2.6. Использование shell . . . . . . . . . . . . . . 52 4.2.7. Применение средств системы . . . . . . . . . . 53 4.2.8. Окружение компьютера . . . . . . . . . . . . . 53 4.2.9. Программирование в shell . . . . . . . . . . . 54 4.2.10. Программирование с помощью awk . . . . . . . . 54 4.3. Электронная связь . . . . . . . . . . . . . . . . 55 4.4. Программирование в системе UNIX . . . . . . . . . 55 5. РУКОВОДСТВО ПО КОМАНДНОЙ СРЕДЕ FACE . . . . . . . . 56 5.1. Что такое FACE? . . . . . . . . . . . . . . . . . 56 5.1.1. Организация этого раздела . . . . . . . . . . . 56 5.2. Введение . . . . . . . . . . . . . . . . . . . . 56 5.2.1. Регистрация в системе . . . . . . . . . . . . . 57 5.2.2. Структура экрана FACE . . . . . . . . . . . . . 57 5.2.2.1. Заголовок . . . . . . . . . . . . . . . . . . 58 5.2.2.2. Рабочая область . . . . . . . . . . . . . . . 58 5.2.2.3. Строка сообщения . . . . . . . . . . . . . . 58 5.2.2.4. Командная строка . . . . . . . . . . . . . . 59 5.2.2.5. Метки функциональных клавиш . . . . . . . . . 59 5.3. Что вы увидите после регистрации . . . . . . . . 59 5.3.1. Альтернативные последовательности . . . . . . . 62 5.3.2. Как использовать меню . . . . . . . . . . . . . 62 5.3.2.1. Метки функциональных клавиш в меню . . . . . 63 5.3.2.2. Перемещение в меню . . . . . . . . . . . . . 63 5.3.2.3. Выбор пункта меню . . . . . . . . . . . . . . 65 5.3.3. Как работать с формой . . . . . . . . . . . . . 67 5.3.3.1. Метки функциональных клавиш в формах . . . . 69 5.3.3.2. Перемещение в форме и редактирование полей. . 69 5.3.4. Перемещение от окна к окну. . . . . . . . . . . 72 5.3.4.1. Переход к другому окну с помощью командной строки . . . . . . . . . . . . . . . . . . 73 5.3.4.2. Перемещение от окна к окну с помощью функциональных клавиш . . . . . . . . . . . . . . . . 73 5 5.3.4.3. Перемещение от окна к окну с помощью команды frm-mgmt. . . . . . . . . . . . . . . . . . . 73 5.3.5. Управление внешним видом вашего оффиса . . . . 74 5.3.5.1. Перемещение окна . . . . . . . . . . . . . . 74 5.3.5.2. Изменение формы окна . . . . . . . . . . . . 75 5.3.6. Командное меню . . . . . . . . . . . . . . . . 75 5.3.7. Получение помощи . . . . . . . . . . . . . . . 78 5.3.7.1. Помощь по командам, меню и полям форм FACE. . 78 5.3.7.2. Получение помощи о FACE . . . . . . . . . . . 79 5.3.8. Выход из FACE . . . . . . . . . . . . . . . . . 80 6. РЕДАКТОР ТЕКСТОВ ED . . . . . . . . . . . . . . . . 83 6.1. Введение . . . . . . . . . . . . . . . . . . . . 83 6.2. Вызов редактора . . . . . . . . . . . . . . . . . 83 6.2.1. Дозапись текста . . . . . . . . . . . . . . . . 83 6.3. Запись файла . . . . . . . . . . . . . . . . . . 84 6.4. Выход из редактора . . . . . . . . . . . . . . . 84 6.5. Чтение файла . . . . . . . . . . . . . . . . . . 84 6.5.1. Команда редактирования файла (e) . . . . . . . 84 6.5.2. Команда чтения файла (r) . . . . . . . . . . . 85 6.6. Печать текста . . . . . . . . . . . . . . . . . . 85 6.6.1. Команда печати (p) . . . . . . . . . . . . . . 85 6.6.2. Команда печати (l) . . . . . . . . . . . . . . 86 6.7. Просмотр файла . . . . . . . . . . . . . . . . . 86 6.7.1. Команда печати (n) . . . . . . . . . . . . . . 86 6.8. Команда удаления строк (d) . . . . . . . . . . . 87 6.9. Команда отмены редакции (u) . . . . . . . . . . . 87 6.10. Команда замены (s) . . . . . . . . . . . . . . . 88 6.11. Команда поиска контекста . . . . . . . . . . . . 90 6.11.1. Конструкция /.../ . . . . . . . . . . . . . . 90 6.11.2. Конструкция ?...? . . . . . . . . . . . . . . 91 6.11.3. Продолжение поиска . . . . . . . . . . . . . . 91 6.12. Команда вставки строк (i) . . . . . . . . . . . 91 6.13. Команда замены строк (c) . . . . . . . . . . . . 92 6.14. Работа со строками . . . . . . . . . . . . . . . 92 6.14.1. Разбиение строк . . . . . . . . . . . . . . . 92 6.14.2. Объединение строк (j) . . . . . . . . . . . . 92 6.14.3. Копирование строк (t) . . . . . . . . . . . . 93 6.14.4. Перестройка строк . . . . . . . . . . . . . . 93 6.14.5. Маркеры . . . . . . . . . . . . . . . . . . . 94 6.14.6. Адресация строк в редакторе . . . . . . . . . 94 6.14.6.1. Адресная арифметика . . . . . . . . . . . . 94 6.14.6.2. Номера строк и указатель текущей строки . . . . . . . . . . . . . . . . . . . . . . . 95 6.14.6.3. Изменение указателя текущей строки . . . . . 95 6.14.6.4. Прерывание работы редактора . . . . . . . . 96 6.14.7. Глобальные команды . . . . . . . . . . . . . . 96 6.14.7.1. Команда g . . . . . . . . . . . . . . . . . 96 6.14.7.2. Команда v . . . . . . . . . . . . . . . . . 97 6.15. Работа с файлами . . . . . . . . . . . . . . . . 97 6.15.1. Команда указания имени файла (f) . . . . . . . 97 6.15.2. Объединение файлов . . . . . . . . . . . . . . 98 6.15.3. Разбиение файла . . . . . . . . . . . . . . . 98 6.15.4. Перекомпоновка файла . . . . . . . . . . . . . 98 6.15.4.1. Перемещение строк (команда m) . . . . . . . 98 6.15.4.2. Копирование строк текста (t) . . . . . . . . 99 6.16. Специальные символы . . . . . . . . . . . . . . 100 6.16.1. Метасимвол . (точка) . . . . . . . . . . . . . 100 6.16.2. Метасимвол \ (обратная дробная черта) . . . . 100 6.16.3. Метасимвол $ (денежный знак) . . . . . . . . . 101 6 6.16.4. Метасимвол ^ (отрицание) . . . . . . . . . . . 101 6.16.5. Метасимвол * (звездочка) . . . . . . . . . . . 101 6.16.6. Метасимволы [] (квадратные скобки) . . . . . . 102 6.16.7. Метасимвол & (амперсенд) . . . . . . . . . . . 103 6.17. Дополнительные возможности . . . . . . . . . . . 103 6.17.1. Временный выход из редактора . . . . . . . . . 104 6.17.2. Восстановление после останова . . . . . . . . 104 6.17.3. Командные файлы редактора . . . . . . . . . . 104 6.17.4. Режим шифрования . . . . . . . . . . . . . . . 104 6.17.5. Программа grep . . . . . . . . . . . . . . . . 105 6.17.6. Команды помощи . . . . . . . . . . . . . . . . 105 6.18. Сообщения редактора . . . . . . . . . . . . . . 106 6.19. Краткий обзор команд . . . . . . . . . . . . . . 106 7. ЭКРАННЫЙ РЕДАКТОР VI . . . . . . . . . . . . . . . 109 7.1. Введение . . . . . . . . . . . . . . . . . . . . 109 7.2. Начальные установки . . . . . . . . . . . . . . . 109 7.2.1. Установка конфирурации терминала . . . . . . . 109 7.2.2. Изменение конфигурации . . . . . . . . . . . . 110 7.3. Создание файла . . . . . . . . . . . . . . . . . 110 7.4. Режимы редактора . . . . . . . . . . . . . . . . 111 7.4.1. Создание текста в режиме Append . . . . . . . . 111 7.4.2. Выход из режима Append . . . . . . . . . . . . 111 7.5. Редактирование текста в командном режиме . . . . 111 7.5.1. Перемещение курсора . . . . . . . . . . . . . . 112 7.5.2. Удаление текста . . . . . . . . . . . . . . . . 112 7.5.3. Добавление текста . . . . . . . . . . . . . . . 112 7.6. Завершение работы c vi . . . . . . . . . . . . . 113 7.7. Перемещение курсора по экрану . . . . . . . . . . 114 7.7.1. Позиционирование курсора на символ . . . . . . 114 7.7.1.1. Переместить курсор в начало или конец строки. 114 7.7.1.2. Поиск символа в строке . . . . . . . . . . . 114 7.7.1.3. Команда перемещения: - (знак минус) . . . . . 115 7.7.1.4. Команда перемещения + (знак плюс) . . . . . . 115 7.7.2. Позиционирование слов . . . . . . . . . . . . . 115 7.7.3. Позиционирование курсора на предложение . . . . 116 7.7.4. Позиционирование курсора по параграфам . . . . 116 7.7.5. Позиционирование в окне . . . . . . . . . . . . 116 7.8. Позиционирование курсора на неотображаемом тексте . . . . . . . . . . . . . . . . . . . . . . . 118 7.8.1. Прокрутка текста . . . . . . . . . . . . . . . 118 7.8.1.1. Команда ^f . . . . . . . . . . . . . . . . . 118 7.8.1.2. Команда ^d . . . . . . . . . . . . . . . . . 118 7.8.1.3. Команда ^b . . . . . . . . . . . . . . . . . 118 7.8.1.4. Команда ^u . . . . . . . . . . . . . . . . . 119 7.9. Переход на указанную строку . . . . . . . . . . . 119 7.10. Номера строк . . . . . . . . . . . . . . . . . . 119 7.11. Поиск символов по шаблону: команды / и ? . . . . 119 7.12. Создание текста . . . . . . . . . . . . . . . . 120 7.12.1. Добавить текст . . . . . . . . . . . . . . . . 121 7.12.2. Вставить текст . . . . . . . . . . . . . . . . 121 7.12.3. Открыть строку для текста . . . . . . . . . . 121 7.13. Удаление текста . . . . . . . . . . . . . . . . 122 7.13.1. Удаление текста в режиме ввода текста . . . . 122 7.13.2. Отменить последнюю команду . . . . . . . . . . 122 7.14. Команды удаления в командном режиме . . . . . . 122 7.14.1. Удаление слов . . . . . . . . . . . . . . . . 123 7.14.2. Удаление параграфов . . . . . . . . . . . . . 123 7.14.3. Удаление строк . . . . . . . . . . . . . . . . 123 7.14.4. Удаление текста после курсора . . . . . . . . 123 7 7.15. Модификация текста . . . . . . . . . . . . . . . 124 7.15.1. Замена текста . . . . . . . . . . . . . . . . 124 7.15.2. Подстановка текста . . . . . . . . . . . . . . 125 7.15.3. Изменение текста . . . . . . . . . . . . . . . 125 7.16. Извлечение и присоединение текста . . . . . . . 126 7.16.1. Перемещение текста . . . . . . . . . . . . . . 126 7.16.2. Перемещение букв . . . . . . . . . . . . . . . 126 7.16.3. Копирование текста . . . . . . . . . . . . . . 126 7.17. Копирование и перемещение текста с использованием регистров . . . . . . . . . . . . . . 127 7.18. Специальные команды . . . . . . . . . . . . . . 128 7.18.1. Повторить последнюю команду . . . . . . . . . 128 7.18.2. Объединение строк . . . . . . . . . . . . . . 128 7.18.3. Очистить окно и восстановить текст . . . . . . 128 7.18.4. Заменить нижний регистр на верхний и vice versa . . . . . . . . . . . . . . . . . . . . . 128 7.19. Использование команд построчного редактора . . . 129 7.19.1. Временный возврат к shell . . . . . . . . . . 129 7.19.2. Запись текста в новый файл . . . . . . . . . . 130 7.19.3. Переход к указанной строке . . . . . . . . . . 130 7.19.4. Удалить остаток буфера . . . . . . . . . . . . 130 7.19.5. Добавить файл в буфер . . . . . . . . . . . . 130 7.19.6. Провести глобальные изменения . . . . . . . . 131 7.20. Завершение работы с редактором vi . . . . . . . 132 7.21. Специальные опции для vi . . . . . . . . . . . . 133 7.21.1. Восстановление потерянного файла . . . . . . . 133 7.21.2. Редактирование нескольких файлов . . . . . . . 133 7.21.3. Просмотр файла . . . . . . . . . . . . . . . . 134 8. SHELL - ИНТЕРПРЕТАТОР КОМАНДНОГО ЯЗЫКА . . . . . . 135 8.1. Метасимволы . . . . . . . . . . . . . . . . . . . 135 8.1.1. Поиск всех символов (метасимвол *) . . . . . . 135 8.1.2. Поиск по одному символу (метасимвол ?) . . . . 136 8.1.3. Поиск одного набора (метасимвол []) . . . . . . 136 8.2. Специальные символы . . . . . . . . . . . . . . . 137 8.2.1. Запуск команды в фоновом режиме (символ &). . . 137 8.2.2. Последовательное выполнение команд (символ ;) . 137 8.2.3. Отмена специального значения (метасимвол \) . . 138 8.2.4. Отмена специального значения (метасимвол кавычки) . . . . . . . . . . . . . . . . . . . . . . 138 8.2.4.1. Использование кавычек для отмены значения символа пробел . . . . . . . . . . . . . . . 138 8.3. Перенаправление ввода и вывода . . . . . . . . . 139 8.3.1. Перенаправить ввод: знак < . . . . . . . . . . 139 8.3.2. Перенаправить вывод: знак > . . . . . . . . . . 139 8.3.3. Добавить вывод в существующий файл . . . . . . 140 8.3.3.1. Некоторые применения перенаправления вывода . . . . . . . . . . . . . . . . . . . . . . . 140 8.3.3.2. Комбинирование фонового режима и перенаправления вывода . . . . . . . . . . . . . . . 141 8.3.4. Перенаправление вывода команде . . . . . . . . 141 8.3.5. Подстановка вывода в качестве аргумента . . . . 142 8.4. Выполнение, останов и повторный запуск процессов . . . . . . . . . . . . . . . . . . . . . . 142 8.4.1. Запуск команд в заданное время . . . . . . . . 142 8.4.2. Получить состояние запущенного процесса . . . . 143 8.4.3. Завершение активных процессов . . . . . . . . . 144 8.4.4. Запуск остановленного задания . . . . . . . . . 145 8 8.4.5. Использование команды nohup . . . . . . . . . . 145 9. СРЕДСТВА ПРОГРАММИРОВАНИЯ SHELL . . . . . . . . . . 146 9.1. Программы shell . . . . . . . . . . . . . . . . . 146 9.1.1. Создание простых программ shell . . . . . . . . 146 9.1.2. Выполнение программ shell . . . . . . . . . . . 146 9.1.3. Создание справочника bin для исполняемых файлов 147 9.1.4. Ограничения при именовании программ shell . . . 147 9.2. Переменные . . . . . . . . . . . . . . . . . . . 147 9.2.1. Позиционные параметры . . . . . . . . . . . . . 147 9.2.2. Специальные параметры . . . . . . . . . . . . . 148 9.2.3. Именованные переменные . . . . . . . . . . . . 148 9.2.4. Присвоение значений переменным . . . . . . . . 149 9.2.4.1. Использование команды read . . . . . . . . . 149 9.2.4.2. Перенаправление вывода команды в переменную . . . . . . . . . . . . . . . . . . . . . 150 9.2.4.3. Присвоение позиционного параметра переменной . . . . . . . . . . . . . . . . . . . . . 151 9.3. Конструкции языка программирования shell . . . . 151 9.3.1. Комментарии . . . . . . . . . . . . . . . . . . 151 9.3.2. "Here document" . . . . . . . . . . . . . . . . 151 9.3.3. Использование ed в shell программе . . . . . . 152 9.3.4. Коды завершения . . . . . . . . . . . . . . . . 152 9.3.4.1. Проверка кодов завершения . . . . . . . . . . 153 9.3.5. Циклы . . . . . . . . . . . . . . . . . . . . . 153 9.3.5.1. Оператор for . . . . . . . . . . . . . . . . 153 9.3.5.2. Оператор while . . . . . . . . . . . . . . . 154 9.3.6. Использование /dev/null . . . . . . . . . . . . 155 9.3.7. Условные операторы . . . . . . . . . . . . . . 155 9.3.8. Безусловная передача управления . . . . . . . . 158 9.4. Отладка программы . . . . . . . . . . . . . . . . 159 9.4.1. Модификация окружения . . . . . . . . . . . . . 160 9.4.2. Добавление команд в файл .profile . . . . . . . 161 9.4.3. Установка характеристик терминала . . . . . . . 161 9.5. Использование shell переменных . . . . . . . . . 161 10. AWK - ЯЗЫК СКАНИРОВАНИЯ И ОБРАБОТКИ ТЕКСТА . . . . 163 10.1. Основные сведения об awk . . . . . . . . . . . . 163 10.1.1. Структура программы . . . . . . . . . . . . . 163 10.1.2. Поля . . . . . . . . . . . . . . . . . . . . . 164 10.1.3. Печать . . . . . . . . . . . . . . . . . . . . 164 10.2. Печать форматированного файла . . . . . . . . . 165 10.3. Простые шаблоны . . . . . . . . . . . . . . . . 165 10.4. Простые действия . . . . . . . . . . . . . . . . 166 10.4.1. Встроенные переменные . . . . . . . . . . . . 166 10.4.2. Определенные пользователем переменные . . . . 166 10.4.2.1. Функции . . . . . . . . . . . . . . . . . . 167 10.5. Примеры некоторых полезных программ . . . . . . 167 10.6. Сообщения об ошибках . . . . . . . . . . . . . . 167 10.7. Шаблоны . . . . . . . . . . . . . . . . . . . . 168 10.7.1. Шаблоны BEGIN и END . . . . . . . . . . . . . 168 10.8. Выражения отношения . . . . . . . . . . . . . . 168 10.9. Регулярные выражения . . . . . . . . . . . . . . 169 10.10. Комбинация шаблонов . . . . . . . . . . . . . . 171 10.11. Область шаблона . . . . . . . . . . . . . . . . 172 10.12. Действие . . . . . . . . . . . . . . . . . . . 172 10.12.1. Арифметические действия . . . . . . . . . . . 173 10.13. Строки и строковые функции . . . . . . . . . . 175 10.14. Поле переменных . . . . . . . . . . . . . . . . 177 10.15. Номер или строка . . . . . . . . . . . . . . . 177 10.16. Операторы управления потоком . . . . . . . . . 178 9 10.17. Массивы . . . . . . . . . . . . . . . . . . . . 179 10.18. Функции, определенные пользователем . . . . . . 181 10.19. Комментарии . . . . . . . . . . . . . . . . . . 181 10.20. Вывод . . . . . . . . . . . . . . . . . . . . . 182 10.20.1. Оператор print . . . . . . . . . . . . . . . 182 10.20.2. Разделители вывода . . . . . . . . . . . . . 182 10.20.3. Оператор printf . . . . . . . . . . . . . . . 182 10.20.4. Вывод в файлы . . . . . . . . . . . . . . . . 183 10.20.5. Вывод в канал . . . . . . . . . . . . . . . . 184 10.21. Ввод . . . . . . . . . . . . . . . . . . . . . 184 10.21.1. Файлы и каналы . . . . . . . . . . . . . . . 185 10.21.2. Разделители ввода . . . . . . . . . . . . . . 185 10.22. Многострочные записи . . . . . . . . . . . . . 185 10.23. Функция getline . . . . . . . . . . . . . . . . 186 10.24. Аргументы командной строки . . . . . . . . . . 187 10.25. Использование awk с другими командами и с shell . . . . . . . . . . . . . . . . . . . . . . . . 188 10.25.1. Функция system . . . . . . . . . . . . . . . 188 10.25.2. Взаимодействие с shell . . . . . . . . . . . 188 10.26. Примеры использования . . . . . . . . . . . . . 189 10.26.1. Генерирование отчетов . . . . . . . . . . . . 189 10.26.2. Дополнительные примеры . . . . . . . . . . . 191 10.26.2.1. Частота использования слов . . . . . . . . 191 10.26.2.2. Накопление . . . . . . . . . . . . . . . . 191 10.26.2.3. Случайный выбор . . . . . . . . . . . . . . 191 10.26.2.4. Возможности shell . . . . . . . . . . . . . 191 10.27. Итоговое краткое описание awk . . . . . . . . . 192 10.27.1. Ограничения . . . . . . . . . . . . . . . . . 195 10.27.2. Инициализация, сравнение и тип приведения . . 195 Приложение 1 . . . . . . . . . . . . . . . . . . . . . . 197 Приложение 2 . . . . . . . . . . . . . . . . . . . . . . 198