agregar el número de pedido a un text específico

¿Hay alguna manera de agregar un número en un text específico? En mi file de text:

<a href="http://localhost/file1.txt">file </a> <a href="http://localhost/file2.txt">file </a> <a href="http://localhost/file1.txt">file </a> <a href="http://localhost/file2.txt">file </a> <a href="http://localhost/file2.txt">file </a> <a href="http://localhost/file.1.txt">file </a> <a href="http://localhost/file.2.txt">file </a> <a href="http://localhost/file.3.txt">file </a> <a href="http://localhost/file.4.txt">file </a> 

y agregue el número de pedido al file y la salida:

 <a href="http://localhost/file1.txt">file 1</a> <a href="http://localhost/file2.txt">file 2</a> <a href="http://localhost/file1.txt">file 1</a> <a href="http://localhost/file2.txt">file 2</a> <a href="http://localhost/file2.txt">file 3</a> <a href="http://localhost/file1.txt">file 1</a> <a href="http://localhost/file2.txt">file 2</a> <a href="http://localhost/file3.txt">file 3</a> <a href="http://localhost/file4.txt">file 4</a> 

 sed 's|\([^.e]*\).txt">.... |&\1|' <in >out 

Y … lo simplificaste de nuevo.

Y … lo complicó de nuevo. Entonces, lo anterior simplemente copyrá los numbers que ya están en la cadena, no repara los que estén rotos. Esta voluntad:

 { sed '/./!G;s/\n/::::::&::::/ s/\(.*[^0-9]\)[0-9][^.]*/\1 /' | nl -d::| sed 's/ *\([0-9]*\)\(.*\) \(.*\) /\2\1\3 \1/' } <infile >outfile 

Utiliza el separador de páginas lógicas de nl para contar solo las secciones delimitadas por líneas en blanco. Sin embargo, está mucho más involucrado que el primero.

Lo expandí un poco para manejar nombres de file bastante arbitrarios (! Single-line!) .

Una forma con awk :

 awk ' !NF { c=0 ; print ; next } { sub(/file.*txt/,"file"++c".txt") sub(/>file </,">file "c"<") print } '