How to replace part of a text file between markers with another text file?
Say I have a text file like this:
# custom content section
a
b
### BEGIN GENERATED CONTENT
c
d
### END GENERATED CONTENT
I'd like to replace the portion between the GENERATED CONTENT
tags with the contents of another file.
What's the simplest way to do this?
Solution 1:
lead='^### BEGIN GENERATED CONTENT$'
tail='^### END GENERATED CONTENT$'
sed -e "/$lead/,/$tail/{ /$lead/{p; r insert_file
}; /$tail/p; d }" existing_file
Solution 2:
newContent=`cat new_file`
perl -0777 -i -pe "s/(### BEGIN GENERATED CONTENT\\n).*(\\n### END GENERATED CONTENT)/\$1$newContent\$2/s" existing_file