sed o awk multilínea reemplazar

Estoy tratando de agregar formato a todas las etiquetas / * TODO: ... * /, pero tengo problemas en el área de varias líneas. Puedo hacer una sola línea de sed; pero para sed multilínea y awk, no lo sé.

¿Cómo hago esto? Estoy abierto a cualquiera de los dos. Esto es lo que tengo hasta ahora.

sed 's/\/\/\*[ \t]*TODO[ \t]*:.*/*\//<span style="color:#aaaaaa;font-weight:bold;">&</span>/g'

reemplazar:

int void main ( int h, char * argv[] )
  int a, b; /* TODO :
               - include libraries
               ...
            */
  foobar();
  /* TODO : fix missing {'s */

con :

int void main ( int h, char * argv[] )
  int a, b; <span style="color:#aaaaaa; font-weight:bold;">/* TODO :
               - include libraries
               ...
            */</span>
  foobar();
  <span style="color:#aaaaaa; font-weight:bold;">/* TODO : fix missing {'s */ </span>

Respuestas a la pregunta(1)

Su respuesta a la pregunta