替换文件中出现的字符串

Replace occurrences of string in a file

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

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

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