这是我解析的HTML
<li id="dl_linux_32">
<a href="link">Link</a>
</li>
<li id="dl_linux_64">
<a href="another_link">Another Link</a>
</li>
使用此curl URL 2>&1 | grep -oE 'href="([^"#]+)"' | sed "s/ /%20/g" | cut -f2 -d "="
我能够获得所有href
的值。但是,我只希望href
中li
的锚定值id
与dl_linux_32
等于{{1}}。
有人可以帮我完成正则表达式吗?
答案 0 :(得分:1)
Perl One-Liner
正则表达式必须检查多行。在这种情况下,Perl单行将很好地工作。
perl -0777 -ne 'print "$&\n" if /<li id="dl_linux_32">\s*<a \Khref="[^"]+"/' yourfile
答案 1 :(得分:0)
通过GNU awk,
$ awk -F'"' -v RS="</li>" '/<li\s*id=\"dl_linux_32\">/{print $4}' file
link
答案 2 :(得分:0)
我正在寻找的正则表达式是dl_linux_32.+href="([^"#]+)"
。我在搜索包含一个或多个字符且href
dl_linux_32
值
答案 3 :(得分:0)
如果html是有效的XML,则可以使用包含xpath搜索的工具
echo '<html>
<li id="dl_linux_32">
<a href="link">Link</a>
</li>
<li id="dl_linux_64">
<a href="another_link">Another Link</a>
</li>
</html>
' | xmlstarlet sel -t -v '//li[@id="dl_linux_32"]/a/@href'
link