我是shell脚本的新手,我遇到过这种情况。我有一个文本文件(让我们称之为text
)。我有file1
,其中包含一个字符串,需要在文件text
中替换为file2
中的字符串。我怎么能做出这样的改变?此外,所有三个文件都可以包含特殊字符,file1
和file2
只有一行。结果应保存在单独的文件中。
我尝试过使用sed
和tr
命令,但我不确定如何让它们使用文件中的字符串。
答案 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