在Linux中的sed命令中执行cat命令[关闭]

q1qsirdb  于 2023-06-05  发布在  Linux
关注(0)|答案(4)|浏览(458)

已关闭,此问题需要details or clarity。目前不接受答复。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

4天前关闭。
Improve this question
我有一个file.txt有一些内容。我想在file1.txt中搜索一个字符串,如果该字符串匹配,我想用file.txt的内容替换该字符串。我如何才能做到这一点?
使用sed

sed -e 's/%d/cat file.txt/g' file1.txt

这是在file1.txt中搜索匹配的字符串,并将其替换为字符串cat file.txt,但我想要的是file.txt的内容。

kjthegm6

kjthegm61#

给定original.txt,内容为:

this is some text that needs replacement

replacement.txt,内容为:

no changes

我不知道你的替换标准是什么,但是假设我想替换 original 文件中所有出现的单词replacement,你可以使用以下命令将原始文本的内容替换为其他文件的内容:

> sed -e 's/replacement/'"`cat replacement.txt`"'/g' original.txt
this is some text that needs no changes
xa9qqrwz

xa9qqrwz2#

您可以使用r命令读取带有sed的文件。然而,这是一个基于行的操作,这可能不是您想要的。

sed '/%d/r file1.txt'

读取发生在“每行”周期结束时。

kzipqqlq

kzipqqlq3#

s命令的e标志起作用:你可以在s(substitue)命令的第二部分执行shell命令:

sed 's/%d/cat file1.txt/e'

https://www.gnu.org/software/sed/manual/sed.html#The-_0022s_0022-Command
如果进行了替换,则执行在模式空间中找到的命令,并将模式空间替换为其输出。

sqserrrh

sqserrrh4#

在将文件内容插入sed字符串之前,将其保存在变量中如何?

$content=`cat file.txt`; sed "s/%d/${content}/g file1.txt"

相关问题