Shell 替换文件中出现的字符串

Shell 替换文件中出现的字符串,shell,sed,tr,Shell,Sed,Tr,我对shell脚本还不熟悉,现在我遇到了一个情况。我有一个文本文件(我们称之为text)。我有file1,其中包含一个字符串,需要在文件text中替换为file2中的字符串。我怎么能做出这样的改变?此外,所有三个文件都可以包含特殊字符,file1和file2只有一行。结果应保存在单独的文件中 我尝试过使用sed和tr命令,但我不确定如何让它们使用文件中的字符串。tr不合适:它映射字符,而不是单词 要将命令的结果输入命令行,请使用反勾号。要使用命令获取文件内容,请使用cat 有几种方法可以使用se

我对shell脚本还不熟悉,现在我遇到了一个情况。我有一个文本文件(我们称之为
text
)。我有
file1
,其中包含一个字符串,需要在文件
text
中替换为
file2
中的字符串。我怎么能做出这样的改变?此外,所有三个文件都可以包含特殊字符,
file1
file2
只有一行。结果应保存在单独的文件中


我尝试过使用
sed
tr
命令,但我不确定如何让它们使用文件中的字符串。

tr
不合适:它映射字符,而不是单词

要将命令的结果输入命令行,请使用反勾号。要使用命令获取文件内容,请使用
cat

有几种方法可以使用
sed
替换使用正则表达式的字符串:我首选的方法是“s/from/to/g”

把这些加起来,你会发现:

cat text | sed "s/`cat file1`/`cat file2`/g" > newtext

有一种更好的方法不用使用
cat
,它直接重定向文件输出,而不产生外部可执行文件:

sed "s/$(<file1)/$(<file2)/g" < text > new_text
sed“s/$(