gpt4 book ai didi

linux - 使用 sed - 如何用中间未知的内容替换两个 HTML 标签或模式?

转载 作者:太空宇宙 更新时间:2023-11-04 04:43:27 25 4
gpt4 key购买 nike

我想完整保留标签之间的未知内容,但希望匹配所有使用以下内容的标签:

<div class="section1-title">arbitrary content here</div>

并将周围的标签替换为:

<h2>arbitrary content here</h2>

我提出了以下内容,但显然它不起作用,因为在第二部分中它实际上是用“].*[<]/h2[>]”替换找到的每个匹配项。

sed -i 's/[<]div class=\"section1-title\"[>].*[<]\/div[>]/<h2[>].*[<]\/h2[>]/g'

我想特别知道如何保持中间内容完整,无论其中有什么,并且只匹配周围的标签,因为显然有很多元素,所以我不能单独搜索和替换它们。据我所知, sed 语句的第一部分似乎确实与正确的内容匹配,主要是我不确定的第二部分。

最佳答案

您需要的是一个 backref。

    bash-3.2$ sed 's/<div class=\"section1-title\">\(.*\) 
<\/div>/<h2>\1<\/h2>/g' <<< '<div class="section1-title">arbitrary
content here</div>'
<h2>arbitrary content here</h2>

内容周围的括号 - \(.*\) - 允许稍后像 \1 一样引用它。

参见:https://www.regular-expressions.info/backref.html

.bash_profile sed: \1 not defined in the RE有关为什么应在正则表达式中转义括号的解释。

关于linux - 使用 sed - 如何用中间未知的内容替换两个 HTML 标签或模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53052751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com