Mi piace usare il comando globale vim per eseguire attività come questa. Questo si applica all'aggiunta dell'iterazione all'inizio di una riga o alla modifica di un simbolo nel testo. Sembra più complicato rispetto alle altre soluzioni, ma è un modello abbastanza flessibile da usare quando lo hai a portata di mano ed è facile da modificare senza pensarci troppo.
Innanzitutto, scegli il tuo intervallo (quali linee vuoi applicare). Di solito uso i segni (ad es. ma
Sulla prima riga e mb
sulla seconda, ma puoi anche usare i numeri di riga o la selezione visiva), quindi inserisco una modifica del seguente comando (attualmente ottimizzato per il tuo caso d'uso)
:let i=1|'a,'bg/^/s/^/\=i.". "/|let i=i+1
Deconstruction
:let i=1
Questo imposta la variabile i
con un valore iniziale. Di solito le liste iniziano con 1, quindi sto impostando i su 1.
|
La barra avvia un nuovo comando
'a,'b
Questo imposta l'intervallo del comando successivo. Vado da un segno a
all'altro b
, che verrebbe impostato sulla prima riga e sull'ultima riga del tuo elenco.
g/^/
Questo è il comando globale. Cerca nel file (o intervallo) una determinata espressione regolare ed eseguirà il resto della riga di comando su ciascuna delle righe corrispondenti. Sto abbinando ogni riga cercando "inizio riga". Se avessi del testo come
Item some txt
other text
Item second item
whatever
Item third
e voglio solo mettere queste etichette davanti Item
e ignorare le altre linee, fare g/Item/
o g/^Item/
invece (assumendo il testo letterale dell'articolo)
s/^/\=i.". "/
Ciò esegue l'espressione regolare per sostituire l'inizio della riga con il valore di i
concatenato con a .
. Generalmente puoi farlo a qualsiasi cosa (sostituisci l'etichetta Item
con il numero, per esempio).
|let i=i+1
Anche se la barra avvia un nuovo comando, imposta un secondo comando da eseguire all'interno del comando globale, anziché dopo che il globale è completo. Il risultato è un incremento i
prima che la riga successiva venga elaborata da g. Ecco un altro luogo di flessibilità. La modifica di i può essere qualsiasi cosa (incremento di 2, chiama una funzione che genera l'elemento successivo della sequenza di Fibonacci, qualunque cosa).
awk
è probabilmente lo strumento per questo lavoro. Ma sono su Windows (sospiro).