使用 sed 命令用模式替换多行字符串

匿名的

我想替换内容为多行的字符串。在每一行的末尾,它可以是 /n 或 \r\n,对于缩进,它可以是制表或空格,我不知道。我认为找到字符串的最佳方法是使用模式并使用 sed 替换它。这是文件的内容:

<Element Blabla>        
        A content
        A second content
        A third content
</Element>
<Element TheSearchedElement>        
        A content
        A second content
        A third content
</Element>
<Element Blabla2>        
        A content
        A second content
        A third content
</Element>

我想替换这个块:

<Element TheSearchedElement>        
        A content
        A second content
        A third content
</Element>

通过这个块:

<Element TheSearchedElement>        
        A content
        A second replaced
        A third content
</Element>

我想我应该创建一个包含要查找的模式的变量 oldPattern 和一个包含要写入的新模式的变量 newPattern 。这是我的脚本的内容:

$oldPattern='<Element TheSearchedElement>*A content*A second content*A third*content*</Element>'
$newPattern='<Element TheSearchedElement>/n/tA content/n/tA second replaced/n/tA third*content/n</Element>'
sed -e '/oldPattern/newPattern/' file.conf

问题是我在输出一个错误:script.sh:1:script.sh:= A的含量的第二含量的第三含量*:未发现script.sh:2:script.sh:= / N / TA含量/ n/tA 第二个替换/n/tA 第三个*内容/n:未找到 sed:-e 表达式 n°1,字符 14:命令后无用的字符

我希望你能帮助我。

威廉·珀塞尔

您不需要进行多行替换,您只需要将替换限制在一个地址范围内:

sed '/^<Element TheSearchedElement>$/,\@^</Element>@{/second/s/content/repl/; }' input

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章