sed 用另一个文件的内容替换文件中的单词?

sed 用另一个文件的内容替换文件中的单词?

我有两个文件file1& file2.

文件1的内容:

Text1
Text2
Text3

文件2的内容:

Sample1 
Sample2
Sample3

我想file1用 的内容替换 Text1 from 一词file2。我已经尝试过以下命令:

sed -i 's/Text1/r file2/g' file1
sed -e 's/Text1/`cat file1`/' < file2

两者都不起作用,我错过了什么?

答案1

如果你只想替换一个word(不是完整的刺),你必须使用一些技巧:

sed "s/100/$(cat -E file2 |tr -d '\n')/;s/\\$/\n/g" file1

或者

sed -e s/100/$(tr \\n $ < file2)/ -e s/\\$/\\n/g file1

主要思想sed细绳编辑器所以它不能接受多行字符串(这意味着带有换行符)在大多数情况下。诀窍是从要交换的文件中删除换行符,进行替换,然后将它们放回去。

答案2

如果您只想将 file1 替换为 file2 的内容,则以下任一操作都可以:

cat file2 > file1

cp file2 file1

相关内容