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> .