我想找到并替换一个模式
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
"
Run Code Online (Sandbox Code Playgroud)
PS Stackoverflow上的这些问题没有帮助. sed:仅当一行与第三个单词或任何模式匹配时,在两个单词之间打印行
使用sed你可以尝试类似的东西:
sed -e ':a;N;$!ba' -e 's#<file.*</file>#<sometext>\nvalue1\n</sometext>#' file
Run Code Online (Sandbox Code Playgroud)
我sed有点生疏,但我们在这里做的是使用:a;N;$!ba我们有效地在模式空间中创建一个长行,以便我们可以应用第二个表达式替换它.
这可能需要 GNU sed
$ cat file
hold1
hold2
<file option1='one'>
some text
some text
more data
</file>
this1
that1
Run Code Online (Sandbox Code Playgroud)
$ sed -e ':a;N;$!ba' -e 's#<file.*</file>#<sometext>\nvalue1\n</sometext>#' file
hold1
hold2
<sometext>
value1
</sometext>
this1
that1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1959 次 |
| 最近记录: |