Использование ed в shell программе
"Here document" предлагает способ использования ed в shell программе. Предположим вы хотите создать shell программу, которая будет вызывать редактор ed, проводить глобальные изменения в файле, записывать изменения в файл и затем завершать работу с ed. На следующем экране приведено содержание программы ch.text, которая выполняет эти задачи:
$ cat ch.text<CR>
echo Type in the filename read file1 echo Type in the exact text to be changed. read old_text echo Type in the exact new text to replace the above. read new_text ed - $file1 <<! g/$old_text/s//$new_text/g w q ! $
Обратите внимание на знак - (минус) в команде ed. Эта опция предотвращает распечатку счетчика символов на экране. Обратите также внимание на формат команды ed для глобальной замены:
g/$old_text/s//$new_text/g
Программа использует 3 переменные: file1, old_text, new_text. При запуске эта программа использует команду read для получения значений этих переменных. Эти переменные содержат следующую информацию:
file - имя файла, который будет редактироваться;
old_text - текст, который будет изменен;
new_text - новый текст.
Переменные вводятся в программу, here document перенаправляет команду глобальной замены, команду записи и команду завершения команде ed. Запустите программу ch.text. Получите следующий экран:
$ ch.text<CR>
Type in the filename memo<CR>
Type in the exact text to be changed. Dear John:<CR>
Type in the exact new text to replace the above. To what it may concern:<CR>
$ cat memo<CR>
To what it may concern:<CR>
$