小编Kvo*_*the的帖子

将多行字符串替换为多行字符串,无需手动转义

假设我有一个文本文件,我想用 中包含的另一个字符串text.txt替换 中 中包含的(多行)字符串,我该怎么做?(我不想使用正则表达式,我实际上想用 中包含的文本替换 中包含的字符串。before.txtafter.txtbefore.txtafter.txttext.txt

我希望使用以下建议的方法: https://unix.stackexchange.com/a/26289/288916

我试过:

perl -i -p0e 's/`cat before.txt`/`cat after.txt`/se' text.txt
Run Code Online (Sandbox Code Playgroud)

但是,除非我是一个十足的白痴并且搞砸了一些琐碎的事情,否则我不能简单地将其扩展为加载要从带有 cat 的文件中找到的字符串。

也许转义出了问题。该文件before.txt包含诸如/[]".


谢谢@ilkkachu,我尝试过:

perl -i -0 -pe '$b = `cat before.txt`; $a = `cat after.txt`; s/\Q$b\E/$a/s\' text.txt
Run Code Online (Sandbox Code Playgroud)

,但它仍然无法正常工作。我通过确保 before 中的字符串与要替换字符串的整行完全匹配来使其在一个实例中工作。但它不起作用,例如替换在行开头找不到的字符串。示例:text.txt文件包含:

Here is 
some text.
Run Code Online (Sandbox Code Playgroud)

before.txt包含:text

after.txt包含:whatever

没有机会。

string perl replace

1
推荐指数
1
解决办法
3472
查看次数

标签 统计

perl ×1

replace ×1

string ×1