2010-10-05 12 views
8

Si je dois trier les lignes suivantes sur la base des valeurs à gauche de '='. Mais le tri doit étendre la sélection à la colonne après '=' simultanément. Thtz est que nous devons trier DNT colonne après « = » ::trier les lignes dans l'éditeur 'VI'

50599=1000000 
50454=00000054 
50080=00005464 
50098=00000875 
50661=00000665 
50788=10000035 
50988=10000006 
50994=10000656 
57009=00000005 
57022=10000008 
57040=10000005 
57000=10000005 
57060=10000089 
57067=10005640 
57102=00000765 
57190=00000867 

Cela doit être fait en éditant le fichier « VI ».

résultat devrait être ::

50080=00005464  
50098=00000875 ...etc. 

Répondre

15

Cette réponse est à venir deux années en retard, mais peut-être encore être pertinente, en mode visuel sélectionnez le bloc que vous voulez trier et exécuter:

: sorte

Cela devrait fonctionner

21

Essayez:

:%!sort 

Il triera selon toute la ligne par ordre alphabétique. Si vous voulez trier numériquement (par exemple le nombre dans la première colonne peut avoir différentes WIDT), essayez:

:%!sort -n 

Ne vous inquiétez pas du =, il ne modifiera pas une ligne, il changera leur commande.

+5

a Vim commande de tri interne: ':% sort n' – Benoit

5

Vous pouvez faire ce qui suit pour voir la sortie triée:

:!sort % 

Explication:

  • :: pour passer en mode ex.
  • !: permet d'exécuter une commande shell .
  • %: le nom du fichier actuellement ouvert.

Pour trier le fichier en le changeant, vous pouvez rediriger sa sortie vers un fichier temporaire puis copiez son contenu dans le fichier d'origine:

:!(sort %>/tmp/tmp;cp -f /tmp/tmp %) 
+0

Hmm, le fichier a été corrompu. J'ai oublié de vous dire sthin: ceci est un fichier xml qui contient des attributs comme :: – ErAB