替换文件中字符串的出现

时间:2016-03-09 23:13:24

标签: shell sed tr

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

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

2 个答案:

答案 0 :(得分:0)

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

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

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

添加这一切可以为您提供:

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

答案 1 :(得分:0)

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

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