Eu tenho o código-fonte de uma página e preciso obter todas as tags desse arquivo. A ordem é importante. Preciso de scripts externos e embutidos. tag deve ser incluída na saída. Estou procurando uma ferramenta Linux de console.
Tentei pesquisar mas não encontrei nada, a ponto de usar o jQuery para obter essas informações e colar em um arquivo. Mas esta saída tem uma codificação estranha, então preciso analisá-la tradicionalmente.
Exemplo: Entrada:
<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>
Saída:
<script src="script1.js"></script>
<script src="script2.js"></script>
<script>alert('hello');</script>
<script src="footer.js">
Segundo exemplo, produza apenas atributos src.
script1.js
script2.js
inline script
footer.js
Responder1
Você pode usar grep
para isso e seu único parâmetro correspondente ( -o
), por exemplo:
$ grep -o "<[^>]*>" <(curl -s http://example.com/)
Isso imprimirá todas as tags HTML, incluindo o pedido.
Para incluir apenas <script>
tags, tente (altere index.html
com seu arquivo):
$ grep -Eo "<script.*(</script>|>)" index.html
Para obter apenas os nomes dos arquivos (do src
atributo), você pode estender adicionando outro grep
, por exemplo:
$ grep -Eo "<script.*(</script>|>)" index.html | grep -o '"[^"]*"' | tr -d '"'
A sintaxe acima não irá ajudá-lo com muitas variações diferentes de código HTML, portanto, para soluções mais complexas,usando regex para analisar htmlem geral não é aconselhável, portanto você deve usar ferramentas apropriadas (idioma de sua preferência ou confira estesferramentas de concha).