替换文件中出现的字符串
Replace occurrences of string in a file
我是 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
我是 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