在两个标签之间进行多行替换的sed查找和替换

4
1个回答

6
使用 sed 命令,您可以尝试以下操作:
sed -e ':a;N;$!ba' -e 's#<file.*</file>#<sometext>\nvalue1\n</sometext>#' file

我的 sed 基本上生疏了,但我们在这里做的是使用 :a;N;$!ba,我们有效地在模式空间中创建一个长行,以便我们可以应用第二个表达式来进行替换。

这可能需要 GNU sed

测试:

$ cat file
hold1
hold2
<file option1='one'>
some text
some text
more data
</file>
this1
that1

$ sed -e ':a;N;$!ba' -e 's#<file.*</file>#<sometext>\nvalue1\n</sometext>#' file
hold1
hold2
<sometext>
value1
</sometext>
this1
that1


其他命令也可以像awk一样使用,但在某些情况下,sed更易于实现。 谢谢。 - user744251

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接