sed -e 's/\[code language="\([^"]*\)"\]/<pre><code class="language-">/' \
-e 's!\[/code\]!</code></pre>!' \
< input > output
Os colchetes devem ser escapados para que não representem um conjunto de caracteres; Em seguida, capturo o texto entre as aspas para usar na substituição (como ); para a segunda pesquisa & Como substituto, usei
!
como separador para evitar a Síndrome da palmadinha inclinada com as substituições da tag de fim de HTML.