提问者:小点点

MacOs sed replace不适用于html文件


我试图在我的文档中的

标记前添加

标记后添加结束标记

我的示例文档如下所示:

<h4 id="id1">Some text.<br />
</h4>
<div class="content">
<p>Content.</p>
</div>

<h4 id="id2">Some text 2.<br />
</h4>
<div class="content">
<p>Content.</p>
</div>

<h4 id="id3">Some text 3.<br />
</h4>
<div class="content">
<p>Content.</p>
</div>

<h4 id="id4">Some text 4.<br />
</h4>
<div class="content">
<p>Content.</p>
</div>

我想达到的目标是:

<button class="collapse"><h4 id="id1">Some text.<br />
</h4></button>
<div class="content">
<p>Content.</p>
</div>

<button class="collapse"><h4 id="id2">Some text 2.<br />
</h4></button>
<div class="content">
<p>Content.</p>
</div>

<button class="collapse"><h4 id="id3">Some text 3.<br />
</h4></button>
<div class="content">
<p>Content.</p>
</div>

<button class="collapse"><h4 id="id4">Some text 4.<br />
</h4></button>
<div class="content">
<p>Content.</p>
</div>

我尝试的是:sed-e-i-e's/(\)/\\1\2\n\3\/'index.html

虽然它不工作,它没有改变任何东西,类似的sed和类似的regex可以用于一个markdown文件,但是我不能让它用于一个html文件。

我还尝试在Atom editor中使用()作为正则表达式,使用作为replace进行查找和替换,结果非常完美。

我错在哪里? 是不是换行了? 我如何在MacOs上使用sed来实现我所需要的,我使用的是bash。

非常感谢,如有任何帮助,将不胜感激


共1个答案

匿名用户

sed -e 's/^<h4/<button class="collapse">&/' -e 's:</h4>:&</button>:' infile

相关问题