我在SO上看到了与此类似的其他问题,但没有一个解决了我的问题。
我有一个本地html页面,我想提取链接,但我不只是想要链接,我想要创建链接的整个标记,如
My Page 1
page1.html
My Page 2
page2.html
My Page 3
page3.html
如果它更容易,我对此很好
grep "<a href=" t2.html |
sed "s/<a href/\\n<a href/g" |
sed 's/\"/\"><\/a>\n/2' |
grep href
我已经尝试过这个命令,这是关于SO
的另一个问题的答案mapit.py
但由于某种原因,它只是从页面中提取了几个链接
如果您想查看,tutorial我正在尝试提取链接。
感谢
答案 0 :(得分:2)
cat indexantigo.html | grep -oiE "<a([^>]+)>([^<]+)</a>"
它将匹配所有内联<a>
标记,而不包含其他标记。
<强>详情
<a([^>]+)>
:从<a
开始>
结束,不包含>
。
([^<]+)
:不包含<
</a>
:以</a>
请注意,<a>
标记与其中的其他标记不匹配。例如<a href="#"><img src="1.jpg" /></a>
编辑:我同意Anthony Geoghegan的回答,使用像Python这样的脚本语言会更方便。
答案 1 :(得分:2)
Grep和sed是执行此任务的错误工具。它们都是面向行的实用程序,它们逐行处理文件或标准输入。但是,您要处理的文件在链接文本中包含换行符,因此这些实用程序将无法工作。
一般来说,parsing HTML with regex is a bad idea。最好使用专用的HTML / XML解析器(应该有一个您熟悉的语言库)。对于诸如此类的任务,我发现创建Python脚本(当然比shell编程更容易)并使用其Beautiful Soup library更容易。