2015-02-10 14 views
16

Wie entferne ich die ersten 5 Zeichen in jeder Zeile in einer Textdatei?
Ich habe eine Datei wie folgt aus:Wie entferne ich die ersten 5 Zeichen in jeder Zeile in einer Textdatei mit 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 

Ich mag würde die Zahl und den Raum am Anfang jeder Zeile in meiner txt-Datei zu entfernen.

+0

Dies ist, was ich gefunden habe:.% S/^ \ {5} // g – Emmy

Antwort

48

:%s/^.\{0,5\}// sollte den Trick tun. Es behandelt auch Fälle, in denen weniger als 5 Zeichen vorhanden sind.

+1

das ist die gute Antwort Ich mag. Vielen Dank. – Emmy

7

Verwenden Sie den regulären Ausdruck ^....., um die ersten 5 Zeichen jeder Zeile zu finden. verwenden Sie es in einer globalen Substitution:

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

die ersten 5 Zeichen sind in jeder Zeile unterschiedlich, ich muss nur die ersten Zeichen entfernen, unabhängig davon, was sie sind. Also brauche ich das Match nicht. – Emmy

+3

Eigentlich bedeutete Barmar ein Regexp-Match - es wird ersetzt. '^' entspricht dem Anfang der Zeile und '.' entspricht einem beliebigen Zeichen. Mit dem Befehl ': s' wird die gesamte Übereinstimmung zwischen dem ersten und dem zweiten Schrägstrich (in diesem Fall fünf möglicherweise unterschiedlichen Zeichen am Anfang der Zeile) durch den Wert zwischen den letzten beiden Schrägstrichen ersetzt - nichts, wodurch sie effektiv entfernt werden. – lared

1

Versuchen

:s/^.....// 

Sie wahrscheinlich den „^“ (Zeilenanfang) nicht benötigen, und würde es Abkürzungen für die 5 Zeichen lang sein - aber simple is good :)

3

Da der Text aussieht wie seine Daten, wäre awk normalerweise hilfreich. Ich V verwenden würde, um die Linien zu wählen, dann drücken Sie :! und Verwendung awk:

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

aus der zweiten Spalte der Daten zu drucken. Spart Ihnen das Zählen aller Räume.

2

Da alle Linien aufgereiht sind, brauchen Sie keine Substitution, um dieses Problem zu lösen. Bringen Sie einfach den Cursor in die obere linke Position (gg), dann: CTRL + vGwlx

+0

Dies ist die richtige Antwort. Die obigen Antworten sind für die Einfachheit dieses Problems zu überbacken. Einfacher, blockweise visuell wählen Sie den zu entfernenden Text aus (Strg + 'v' + Bewegung,' G' zum Ende der Datei, 'l' einige Male, um die Auswahl so zu verschieben, dass sie alles enthält, was Sie löschen wollen) und' x 'löschen – Jangari

Verwandte Themen