Скажем, у меня есть текстовый файл, как это:
# custom content section
a
b
### BEGIN GENERATED CONTENT
c
d
### END GENERATED CONTENT
Я хотел бы заменить часть между GENERATED CONTENT
тегами содержимым другого файла.
Какой самый простой способ сделать это?
bash
unix
shell-script
textfiles
text-processors
smokris
источник
источник
sed
может сделать гораздо больше, чем простоs/.../...
!r insert_file
должна быть последней на ее линии. Обратите внимание, что ни пробел, ни комментарии после него не допускаются. Код был протестирован с использованием GNUsed
с--posix
включенной опцией, и он работал как положено, поэтому он должен работать с любым posix-совместимымsed
.output=$(sed -e "..." existing_file)
перехватили выходные данные sed (например, ), а затем выполнили замену во втором проходе (напримерecho "$output" > existing_file
), поскольку попытка перенаправления в файл, из которого вы читаете, приведет к его усечению до чтения содержимого.источник
Предупреждение: это определенно не самый простой способ сделать это. (РЕДАКТИРОВАТЬ: bash работает; POSIX grep тоже хорошо)
Если основной текст находится в файле «main», а сгенерированный контент - в файле «gen», вы можете сделать следующее:
источник
main
для записи, очистки, прежде чем она будет прочитана кошкой.источник
r FILE2
вас можно сказатьr !command
читать из другого скрипта.