web-dev-qa-db-fra.com

Comment puis-je supprimer les 5 premiers caractères de chaque ligne d'un fichier texte à l'aide de vi?

Comment puis-je supprimer les 5 premiers caractères de chaque ligne d'un fichier texte?
J'ai un fichier comme celui-ci: 

   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

J'aimerais supprimer le nombre et l'espace au début de chaque ligne de mon fichier txt. 

26
Emmy

:%s/^.\{0,5\}// devrait faire l'affaire. Il gère également les cas où il y a moins de 5 caractères.

66
lared

Utilisez l'expression régulière ^..... pour faire correspondre les 5 premiers caractères de chaque ligne. utilisez-le dans une substitution globale:

:%s/^.....//
10
Barmar

Puisque le texte ressemble à des données en colonnes, awk serait généralement utile. J'utiliserais V pour sélectionner les lignes, puis cliquerais sur :! et utiliserais awk:

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

imprimer la deuxième colonne des données. Vous évite de compter les espaces complètement.

3
easoncxz

Essayer 

:s/^.....//

Vous n'avez probablement pas besoin du "^" (début de ligne), et il y aurait des raccourcis pour les 5 caractères - mais simple, c'est bien :)

2
racraman

Toutes les lignes étant alignées, vous n'avez pas besoin d'une substitution pour résoudre ce problème . Amenez simplement le curseur en haut à gauche (gg), puis:

2
Mark

:%s/^.\{0,5\}//g pour global, puisque nous voulons supprimer les 5 premières colonnes de chaque ligne pour chaque ligne.

0
user3242313