我有一个包含一些内容的 file.txt
文件。我想在 file1.txt
文件中搜索字符串,如果匹配成功,我想将该字符串替换为 file.txt
的内容。我该如何实现?
我尝试使用 sed
:
sed -e 's/%d/cat file.txt/g' file1.txt
这是在file1.txt
中搜索匹配的字符串并将其替换为字符串cat file.txt
,但我想要的是file.txt
中的内容。
在将文件插入sed字符串之前,将文件内容保存在变量中如何?
$content=`cat file.txt`; sed "s/%d/${content}/g file1.txt"
content=$(cat file.txt); sed ...
,但是如果文件中包含 /
、&
或其他一些字符序列,则此方法将无法正常工作。 - Kevin给定内容为original.txt
的文件:
this is some text that needs replacement
并将replacement.txt
替换为以下内容:
no changes
我不确定你的替换标准是什么,但是假设我想要在原始文件中替换所有出现的单词replacement
,你可以使用以下方法将原始文本的内容替换为另一个文件的内容:
> sed -e 's/replacement/'"`cat replacement.txt`"'/g' original.txt
this is some text that needs no changes
r
命令使用sed
读取文件。但是,这是基于行的操作,可能不是您想要的。sed '/%d/r file1.txt'
使用s命令的e标志可以解决问题:您可以在s(替换)命令的第二部分中执行shell命令:
sed 's/%d/cat file1.txt/e'
https://www.gnu.org/software/sed/manual/sed.html#The-_0022s_0022-Command
如果进行了替换,则执行模式空间中找到的命令,并用其输出替换模式空间。
file.txt
包含一行还是多行?文件中的换行符应保留还是可以被视为单行,并将换行符替换为空格? - Jonathan Leffler