Replacing a string by a file using Sed
The following command should work for what you want:
sed "s/this is test/$(cat bar)/" foo
If foo
contain more then one line, then you can use:
sed "s/this is test/$(sed -e 's/[\&/]/\\&/g' -e 's/$/\\n/' bar | tr -d '\n')/" foo
or:
sed -e '/this is a test/{r bar' -e 'd}' foo
Source of the last two commands: Substitute pattern within a file with the content of other file
To make the change in foo
file, use sed -i
.
One way:
sed -e '/this is test/r bar' -e '/this is test/d' foo
Sample result:
$ cat bar
12
23
$ cat foo
ab
this is test
cd
this is test
ef
$ sed -e '/this is test/r bar' -e '/this is test/d' foo
ab
12
23
cd
12
23
ef