我想替换内容为多行的字符串。在每一行的末尾,它可以是 /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] 删除。
我来说两句