我有一段 html 代码,我尝试提取其中的第一段。
html 是这样的:
<p>
Hi. Lorem Ipsum<br />
dolor si amet […]
</p>
<p>…</p>
<p>…</p>
我首先想到的是使用sed 's/<\/p>*/<\/p>'
但它似乎不起作用:它什么也不做
任何想法 ?
答案1
这应该可以正常工作。它使用字符串操作,而不是正则表达式。它还应该处理打开和关闭 P 标签在同一行的情况。
awk '
!in_p && idx = index($0,"<p>") {
in_p = 1
$0 = substr($0,idx+4)
}
in_p && idx = index($0, "</p>") {
seen_close = 1
$0 = substr($0,0,idx-1)
}
in_p {print}
seen_close {exit}
' file.html
如果您有嵌套段落,则不会按预期工作
<p>
Hi. Lorem Ipsum<br />
dolor si amet […]
<p>
…
</p>
</p>
<p>2nd paragraph</p>
XML/HTML 手动解析起来非常麻烦:请使用 HTML 解析器。