Se ruby
estiver disponível, você pode fazer o seguinte
ruby -e 'puts readlines.join[/(?<=<tr>).+(?=<\/tr>)/m].gsub(/<\/?tr>/, "")' file
onde file
é seu arquivo html de entrada. O comando executa um one-liner Ruby. Primeiro, ele lê todas as linhas de file
e as associa a uma string, readlines.join
. Então, a partir da string, ele seleciona qualquer coisa entre (mas não incluindo) <tr>
e <\/tr>
que é um caractere ou mais, independentemente de novas linhas, [/(?<=<tr>).+(?=<\/tr>)/m]
. Em seguida, remove qualquer <tr>
ou </tr>
da sequência, gsub(/<\/?tr>/, "")
(isso é necessário para manipular tags tr
aninhadas). Finalmente, imprime a string, puts
.
Você disse que um analisador html não é garantido para você, mas é muito fácil de usar Nokogiri com ruby
e torna o comando mais simples .
ruby -rnokogiri -e 'puts Nokogiri::HTML(readlines.join).xpath("//tr").map { |e| e.content }' file
-rnokogiri
carrega o Nokogiri. Nokogiri::HTML(readlines.join)
lê todas as linhas de file
. xpath("//tr")
seleciona cada elemento tr
e map { |e| e.content }
seleciona o conteúdo de cada elemento, ou seja, o que está entre <tr>
e </tr>
.