我想在哪里find并replace一个模式
text=" hold1 hold2 <file option1='one'> some text some text ... ... more data </file> this1 that1 " pattern="<file.*</file>" replacewith="<sometext> value1 </sometext>" output text=" hold1 hold2 <sometext> value1 </sometext> this1 that1 "
PS Stackoverflow的这些问题没有帮助。 sed:只有当其中一行匹配第三个字或任何模式时,才在两个字之间打印行
与sed正则expression式,跨越多行search
使用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