2010-10-05 10 views
8

Si tengo que ordenar las siguientes filas en base a los valores a la izquierda de '='. Pero la clasificación debe expandir la selección a la columna después de '=' simultáneamente. Thtz es dnt tiene que ordenar la columna después de '=' ::ordena filas en el 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 

Esto tiene que ser hecho en 'VI' de editar el archivo.

resultado debe ser ::

50080=00005464  
50098=00000875 ...etc. 

Respuesta

15

Esta respuesta viene 2 años tarde, pero aún podría ser relevante, en el modo visual seleccionar el bloque que desea ordenar y ejecutar:

: tipo

Esto debería funcionar

21

Probar:

:%!sort 

Se clasificará de acuerdo toda la línea alfabéticamente. Si desea ordenar numéricamente (es decir, el número de la primera columna puede tener diferentes Widt), y luego tratar:

:%!sort -n 

No se preocupe por la =, no va a modificar cualquier línea, se acaba de cambiar su orden.

+5

Vim tiene la comando interno de ordenamiento: ':% sort n' – Benoit

5

puede hacer lo siguiente para ver la salida ordenada:

:!sort % 

Explicación:

  • :: para entrar en modo ex.
  • !: le permite ejecutar un comando shell .
  • %: el nombre del archivo actualmente abierto.

Para ordenar el archivo cambiándolo puede redirigir su salida a un archivo temporal y luego copiar su contenido al archivo original:

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

Hmm, el archivo se corrompió. Olvidé decirte algo: este es un archivo xml que tiene algunos atributos como :: – ErAB

Cuestiones relacionadas