2015-02-10 36 views
16

Come rimuovo i primi 5 caratteri in ogni riga in un file di testo?
Ho un file in questo modo:Come rimuovo i primi 5 caratteri in ogni riga in un file di testo usando vi?

4 Alabama 
    4 Alaska 
    4 Arizona 
    4 Arkansas 
    4 California 
    54 Can 
    8 Carolina 
    4 Colorado 
    4 Connecticut 
    8 Dakota 
    4 Delaware 
    97 Do 
    4 Florida 
    4 Hampshire 
    47 Have 
    4 Hawaii 

vorrei rimuovere il numero e lo spazio all'inizio di ogni riga nel mio file txt.

+0

Questo è quello che ho trovato:.% S/^ \ {5} // g – Emmy

risposta

48

:%s/^.\{0,5\}// dovrebbe fare il trucco. Gestisce anche i casi in cui ci sono meno di 5 caratteri.

+1

questa è la buona risposta che mi piace. Grazie. – Emmy

7

Utilizzare l'espressione regolare ^..... per abbinare i primi 5 caratteri di ciascuna riga. utilizzarlo per un cambio globale:

:%s/^.....// 
+0

i primi 5 caratteri sono diversi in ogni riga, ho solo bisogno di rimuovere i primi caratteri indipendentemente da cosa siano. Quindi non ho bisogno della partita. – Emmy

+3

In realtà Barmar significava una corrispondenza regolare, è quello che viene sostituito. '^' corrisponde all'inizio della riga e '.' corrisponde a qualsiasi carattere. Il comando ': s' sostituisce l'intera corrispondenza tra la prima e la seconda barra (in questo caso cinque, possibilmente diversi, caratteri all'inizio della riga) con quello che c'è tra le ultime due barre - nulla, rimuovendole efficacemente. – lared

1

Prova

:s/^.....// 

Probabilmente non è necessario il "^" (inizio linea), e non ci sarebbe scorciatoie per i 5 caratteri - ma semplice è buono :)

3

Poiché il testo sembra essere un dato con colonna, awk di solito sarebbe utile. Userei V per selezionare le linee, poi ha colpito :! e l'uso awk:

:'<,'>! awk '{ print $2 }' 

per stampare la seconda colonna dei dati. Ti evita completamente di contare gli spazi.

2

Poiché tutte le linee sono allineate, non è necessaria una sostituzione per risolvere questo problema. Basta portare il cursore nella posizione in alto a sinistra (gg), quindi: CTRL + vGwlx

+0

Questa è la risposta corretta. Le risposte alle espressioni regolari di cui sopra sono troppo overbaked per la semplicità di questo problema. Metti più semplicemente, visuale a blocchi seleziona il testo da rimuovere (ctrl + 'v' + movimento,' G' per andare alla fine del file, 'l' un paio di volte per spostare la selezione per includere tutto ciò che vuoi eliminare) e' x 'per cancellare. – Jangari