regex - 如何使用 sed 将一个文件中的模式替换为另一个文件的内容?

标签 regex unix text replace sed

假设我有fileA,里面有内容

Hello, this is some
random text REPLACEHERE and some more
random text

和包含内容的fileB

stuff that goes into
fileA, at that specific place

如何将 fileA 中的 REPLACEHERE 正确替换为 fileB 的内容?就在那个地方,就像我在做一个简单的正则表达式操作一样?

我得到的最接近的是

sed -i '/REPLACEHERE/r fileB' fileA

它只会在找到 REPLACEHERE 之后在行中追加 fileB,这是不好的。我需要将它准确地替换到位(我认为这就是 i 标志的实际用途)。

最佳答案

仅使用 sed 可能不会那么容易,我会使用 shell 变量/命令扩展:

sed -i "s/REPLACEHERE/$(cat fileB)/g" fileA

-i 表示更改将保存到 fileA,而不是打印到 stdout

顺便提一下,注意 fileB 中的斜杠。如果有的话,他们将不得不转义。

关于regex - 如何使用 sed 将一个文件中的模式替换为另一个文件的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14546949/

相关文章:

javascript - 删除两个字符串正则表达式之间的所有内容

javascript - 将 Javascript 正则表达式模式转换为 C++ std::regex 的规则?

linux:获取已运行进程的 umask?

Bash:将文本 append 到文件的最后一行

r - 标准化电话号码数据

php - preg_replace() 仅字符串的特定部分

django - 从 Django 运行 unix 命令

unix - 如何使用 wget --convert-links

css - Flex - 文本颜色的可见阴影

javascript - 使用 javascript/jQuery 在 IE9 及以下版本中禁用/只读输入文本