Isso funciona, mas tenho certeza de que deve haver uma solução mais simples:
sed -n '/<table role=\"grid\">/{
x
/^$/b
x
:loop
p
/<\/table>/q
n
b loop
}'
Ao combinar table
, a linha é trocada (x) pelo espaço de espera e
os conteúdos antigos são comparados. Eles estarão vazios (/ ^ $ /) pela primeira vez, então
nós nos ramificamos (b) até o final do script. Na próxima vez, o porão não
estar vazio (tem a primeira linha da tabela). Então desfazemos a troca (x) e começamos
um loop onde a linha é impressa (p), até que o final da tabela seja correspondido
quando paramos (q). Cada vez que recebemos a próxima linha (n) e ramificação de volta
para o rótulo de loop.
É mais simples no awk:
awk '/<table role=\"grid\">/,/<\/table>/ { if(n==1)print }
/<\/table>/ { n++ }'