Несмотря на то, что использование ed
или sed
является обычной практикой 1 , иногда использование Vim намного удобнее. 2 Действительно, в этом случае вместонаписав ed
-подобный скрипт «вслепую», проще выполнить желаемое редактирование одного из файлов в интерактивном режиме с помощью
vim -w log.vim file1.txt
, а затем повторить его для остальных файлов.
for f in file*.txt; do vim -s log.vim "$f"; done
В вашем случае log.vim
файл, скорее всего, будет иметь содержимое, похожее на это:
gg55dd:25,35s/^/\/\/ /
:w %_new
:q!
Обратите внимание, что для сохранения файла с новым именем вы не должны набирать его напрямую, а использовать %
замена.Другим способом может быть предварительное дублирование файлов, а затем их редактирование на месте (сохранение каждого из них :w
).
Преимущество этого подхода состоит в том, что вы можете вносить все изменения в интерактивном режиме, гарантируя, что выполучают результат, который вы хотите получить.
1 И, конечно, вы можете сделать то же самое в стиле ed
.
for f in file*.txt; do vim -c '1,55d|25,35s/^/\/\/ /|w! '"${f}_new"'|q!' $f
2 Не говоря уже о том, что в вопросе четко указано, что решение Vim является предпочтительным.