使用grep从本地文件中的HTML标记中获取文本

使用grep从本地文件中的HTML标记中获取文本,html,regex,bash,screen-scraping,grep,Html,Regex,Bash,Screen Scraping,Grep,可能重复: 从输入文件中摘录 <TD class="clsTDLabelWeb" width="28%">Municipality:&nbsp;</TD> <TD style="WIDTH: 394px" class="clsTDLabelSm" colSpan="5"> <span id="DInfo1_Municipality">JUPITER</span></TD> Grep不支持这种类型的regex(lo

可能重复:

从输入文件中摘录

<TD class="clsTDLabelWeb" width="28%">Municipality:&nbsp;</TD>
<TD style="WIDTH: 394px" class="clsTDLabelSm" colSpan="5">
<span id="DInfo1_Municipality">JUPITER</span></TD>

Grep不支持这种类型的regex(lookbehind断言),它是一个非常糟糕的工具,但对于给定的示例来说,它是可行的,在许多情况下都会崩溃

grep -io "<span id=\"DInfo1_Municipality\">.*</span>" file.htlm | grep -io ">[^<]*" | grep -io [^>]*
grep-io.*“file.htlm | grep-io”>[^
sed-n'/DInfo1_市政/s//'
尝试一下:

sed -n 's|^<span id="DInfo1_Municipality">\([^<]*\)</span></TD>$|\1|p' file

谢谢。我有一种感觉,我想做一些grep不支持的事情。看起来我必须做一些实际的编程。将-P标志传递给grep可以让我完成我想要的“向后看/向前看”。谢谢你的提示
grep -io "<span id=\"DInfo1_Municipality\">.*</span>" file.htlm | grep -io ">[^<]*" | grep -io [^>]*
sed -n '/DInfo1_Municipality/s/<\/span.*//p' file | sed 's/.*>//'
sed -n 's|^<span id="DInfo1_Municipality">\([^<]*\)</span></TD>$|\1|p' file
grep -Po '(?<=<span id="DInfo1_Municipality">)([^</span>]*)'