![从 html 文件中获取选定的标签](https://linux22.com/image/1469351/%E4%BB%8E%20html%20%E6%96%87%E4%BB%B6%E4%B8%AD%E8%8E%B7%E5%8F%96%E9%80%89%E5%AE%9A%E7%9A%84%E6%A0%87%E7%AD%BE.png)
我有一个页面源代码,我需要从这个文件中获取所有标签。顺序很重要。我需要外部和内联脚本。标签必须包含在输出中。我正在寻找一个控制台 Linux 工具。
我尝试搜索,但什么也没找到,于是我使用 jQuery 获取此信息并将其粘贴到文件中。但此输出有一些奇怪的编码,所以我需要以传统方式解析它。
例如:输入:
<html>
<head>
<script src="script1.js"></script>
<script src="script2.js"></script>
<script>alert('hello');</script>
</head>
<body>
<div id="main">...</div>
<script src="footer.js">
</body>
</html>
输出:
<script src="script1.js"></script>
<script src="script2.js"></script>
<script>alert('hello');</script>
<script src="footer.js">
第二个示例,仅输出 src 属性。
script1.js
script2.js
inline script
footer.js
答案1
您可以使用grep
它及其唯一匹配的参数(-o
),例如:
$ grep -o "<[^>]*>" <(curl -s http://example.com/)
这将打印包括订单在内的所有 html 标签。
要仅包含<script>
标签,请尝试(index.html
使用您的文件更改):
$ grep -Eo "<script.*(</script>|>)" index.html
为了获取文件名(从src
属性),您可以通过添加另一个来扩展grep
,例如:
$ grep -Eo "<script.*(</script>|>)" index.html | grep -o '"[^"]*"' | tr -d '"'
上述语法无法帮助您处理许多不同的 html 代码变体,因此对于更复杂的解决方案,使用正则表达式解析 html一般不建议,因此你应该使用适当的工具(你喜欢的语言或查看这些外壳工具)。