sed -nr '/sub-title/ {N;s,/desc,&,;Tprint;s,<sub-title[^>]+>(.*)</sub-title>\n(<desc[^>]+>)(.*</desc>), : ,;:print};p' <<<'<programme start="500 -05" stop="700 -5" channel="Channel_ID">
<title lang="en">Program Name</title>
<sub-title lang="en">Subtitle Example</sub-title>
<desc lang="en">Description Example</desc>
<programme start="600 -05" stop="800 -5" channel="Channel_ID">
<title lang="en">Program Name foo</title>
<desc lang="en">Description Example bar</desc>
> '
<programme start="500 -05" stop="700 -5" channel="Channel_ID">
<title lang="en">Program Name</title>
<desc lang="en">Subtitle Example : Description Example</desc>
<programme start="600 -05" stop="800 -5" channel="Channel_ID">
<title lang="en">Program Name foo</title>
<desc lang="en">Description Example bar</desc>
É uma solução sed GNU / Linux, mas acho que é fácil se adaptar ao Windows.
Você pode tentar usar outro separador em substituição e a opção -r para Regexp avançado para evitar \/ \( \)
.
Escrevi algumas tags literais ( </sub-title>
</desc>
), então, se houver alguns espaços em branco extras, você terá que se adaptar.