-1

我有一个 SGML 文件,它看起来有很多<p>带有隐含结束标签的段落,如下所示:

<p>Here is one paragraph. 
<p>And here is another. This one contains <i>italics</i>.
<p>Finally, here is another paragraph.

这些段落没有结束标签。我想让它看起来像这样:

<p>Here is one paragraph.</p> 
<p>And here is another. This one contains <i>italics</i>.</p>
<p>Finally, here is another paragraph.</p>

有没有使用 OSS 工具的简单方法来做到这一点?(如 vim、sed 等?)

4

2 回答 2

1

在 vim 中,给定您指定的输入,您可以使用:%s/$/<\/p>/. 请注意,这仅适用于您的示例,其中每个段落都是一行。

在多行段落的情况下,首先连接所有行:%j,然后在开始标签前添加一个结束标签:%s/ \+<p>/<\/p><p>/,然后添加最后一个结束标签:%s/$/<\/p>/。最后用 重排文本gqap

于 2015-10-06T04:43:35.740 回答
0

%s/<p>\zs\(.*\)/\1<\/p>/应该在 Vim 中工作,但“经典”解决方案是将第一个移动到文本的末尾,%s/<p>/<\/p><p>/然后将其移动</p>到文本的末尾。

于 2015-10-06T04:41:15.753 回答