By using a file to insert the replacement text the content can contain special characters that would normally require a lot of extra work to escape.
#!/bin/bash # Replace the right portion of a line with the content of a file. # 1) Replace the right portion of a line with a marker word # 2) Append after the marker with the content from a file # 3) Remove the marker and new line to pull the next line up. cat > outfile <<!EOF hello there tom How are you today? Where is the dog show? !EOF cat outfile cat > testfile <<!EOF flowers doing? !EOF sed -i outfile -e 's/you.*/REPLACE_MARKER/g' printf "\n\n\n" cat outfile sed -i outfile -e "/REPLACE_MARKER/r testfile" printf "\n\n\n" cat outfile sed -i outfile -e "/REPLACE_MARKER/{:a;N;s/REPLACE_MARKER\n//}" printf "\n\n\n" cat outfile