Perl para o resgate!
perl -pe 'BEGIN { $n = 1 } s%\[H%</pre></div><div id=cat$n><pre>% && $n++' filename
-
-p
lê a entrada linha por linha e imprime o que o código faz com ela -
BEGIN { ... }
é executado antes de o programa ser inserido -
s%pattern%replacement%
substituipattern
porreplacement
. -
\[
precisa de uma barra invertida, porque[
é especial em expressões regulares -
&& $n++
Se a substituição for bem sucedida, ela retornará true, então o próximo comando é executado: e incrementa o contador$n
.