Me gusta usar el comando global vim para realizar tareas como esta. Esto se aplica a agregar iteraciones al comienzo de una línea o modificar un símbolo en el texto. Parece más complicado que las otras soluciones, pero es un patrón bastante flexible para usar cuando lo tiene a mano, y es fácil de modificar sin pensarlo demasiado.
Primero, elija su rango (qué líneas desea aplicar esto). Usualmente uso marcas (por ejemplo, ma
en la primera línea y mb
en la segunda, pero también puede usar números de línea o selección visual), luego ingreso una modificación del siguiente comando (actualmente ajustado para su caso de uso)
:let i=1|'a,'bg/^/s/^/\=i.". "/|let i=i+1
Deconstruccion
:let i=1
Esto configura una variable i
con un valor inicial. Por lo general, las listas comienzan con 1, por lo que estoy configurando i en 1.
|
La barra inicia un nuevo comando
'a,'b
Esto establece el rango del siguiente comando. Voy de marca a
en marca b
, que se establecería en la primera línea y la última línea de su lista.
g/^/
Este es el comando global. Busca en el archivo (o rango) una expresión regular dada y ejecutará el resto de la línea de comando en cada una de las líneas que coincidan. Estoy haciendo coincidir cada línea buscando "comienzo de línea". Si tuvieras texto como
Item some txt
other text
Item second item
whatever
Item third
y solo desea poner estas etiquetas al frente Item
e ignorar las otras líneas, hacer g/Item/
o en su g/^Item/
lugar (asumiendo el texto literal del elemento)
s/^/\=i.". "/
Esto ejecuta la expresión regular para reemplazar el comienzo de la línea con el valor de i
concatenado con a .
. Generalmente puede hacer esto a cualquier cosa ( Item
por ejemplo, reemplace la etiqueta con el número).
|let i=i+1
Aunque la barra inicia un nuevo comando, configura un segundo comando para que se ejecute dentro del comando global, en lugar de después de que se complete el comando global. El resultado es que incrementamos i
antes de que la siguiente línea sea procesada por g. Aquí hay otro lugar de flexibilidad. La modificación de i puede ser cualquier cosa (incremente en 2, llame a una función que genere el siguiente elemento de la secuencia de Fibonacci, lo que sea).
awk
Es probablemente la herramienta para este trabajo. Pero estoy en Windows (suspiro).