Инструмент для редактирования текста файлов в Unix называется ed
(в отличие от sed
, что, как следует из названия, является редактор потоков ).
ed
когда-то был задуман как интерактивный редактор, но он также может быть легко написан на скрипте. ed
работает так, что все команды принимают параметр адреса. Способ обращения к конкретной строке - это просто номер строки, а способ изменения адресуемой строки (ей) - команда s
, которая принимает то же регулярное выражение, что и sed
. Итак, чтобы изменить 42-ю строку, вы должны написать что-то вроде 42s/old/new/
.
Вот вся команда:
FILENAME=/path/to/whereever
LINENUMBER=25462599
ed -- "${FILENAME}" <<-HERE
${LINENUMBER}s!</Topic>!</Line>!
w
q
HERE
Преимущество этого заключается в том, что ed
стандартизирован, а флаг -i
для sed
является проприетарным расширением GNU, которое недоступно во многих системах.