sed 's|\([^.e]*\).txt">.... |&|' <in >out
E ... você simplificou novamente.
E ... compliquei de novo. Portanto, o acima apenas copiará números que já estão na string - não corrige nenhum que esteja quebrado. Isto irá:
{ sed '/./!G;s/\n/::::::&::::/
s/\(.*[^0-9]\)[0-9][^.]*/ /' |
nl -d::|
sed 's/ *\([0-9]*\)\(.*\) \(.*\) / /'
} <infile >outfile
Que usa o separador de páginas lógicas de nl
para contar apenas as seções delimitadas por linhas em branco. É muito mais envolvente do que a primeira, no entanto.
Eu o expandi um pouco para lidar com nomes de arquivos (<> de uma única linha!) bastante arbitrários.