2010-10-05 12 views
8

Se devo ordinare le seguenti righe sulla base dei valori a sinistra di "=". Ma l'ordinamento dovrebbe espandere la selezione alla colonna dopo '=' contemporaneamente. Thtz è abbiamo dnt dobbiamo ordinare colonna dopo '=' ::righe di ordinamento nell'editor "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 

Questo deve essere fatto in 'VI' la modifica del file.

risultato dovrebbe essere ::

50080=00005464  
50098=00000875 ...etc. 

risposta

15

Questa risposta è venuta due anni di ritardo, ma potrebbe ancora essere rilevante, in modalità visiva selezionare il blocco si desidera ordinare ed eseguire:

: sorta

Questo dovrebbe funzionare

21

Prova:

:%!sort 

Sarà ordinare secondo tutta la linea in ordine alfabetico. Se si desidera ordinare numericamente (cioè il numero nella prima colonna può avere Widt diverso), quindi provare:

:%!sort -n 

Non preoccuparti per il =, esso non modificherà qualsiasi linea, sarà solo cambiare la loro ordine.

+5

Vim ha la comando di ordinamento interno: ':% sort n' – Benoit

5

è possibile effettuare le seguenti operazioni per visualizzare l'output ordinato:

:!sort % 

Spiegazione:

  • :: per entrare in modalità ex.
  • !: consente di eseguire un comando shell .
  • %: il nome del file attualmente aperto.

Per ordinare il file modificando esso è possibile reindirizzare l'output in un file temporaneo e quindi copiare il contenuto di nuovo al file originale:

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

Hmm, il file è stato danneggiato. Ho dimenticato di dirti sthin: questo è un file xml che ha alcuni attributi come: – ErAB