我有一个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等?)
答案 0 :(得分:1)
在vim中,根据您指定的输入,您可以使用:%s/$/<\/p>/
。
请注意,这仅适用于每个段落都是一行的示例。
如果是多行段落,请首先加入所有行:%j
,然后将结束标记添加到开始标记:%s/ \+<p>/<\/p><p>/
,然后添加最终结束标记:%s/$/<\/p>/
。最后使用gqap
重排文本。
答案 1 :(得分:0)
%s/<p>\zs\(.*\)/\1<\/p>/
应该在Vim中运行,但“经典”解决方案是%s/<p>/<\/p><p>/
,然后将第一个</p>
移到文本的末尾。