сортировка строк в Редакторе 'VI'

если мне нужно отсортировать следующие строки на основе значений слева от'='. Но сортировка должна одновременно расширять выделение до столбца после'='. Thtz мы dnt должны сортировать столбец после'='::

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  

это нужно сделать в' VI ' редактирования файла.

результат должен быть ::

50080=00005464    
50098=00000875  ...etc.

3 ответов


этот ответ приходит на 2 года позже, но все еще может быть актуальным, в визуальном режиме выберите блок, который вы хотите отсортировать и запустить:

:!вроде

Это должно работать


попробуй:

:%!sort

Он будет сортировать по алфавиту, по всей линии. Если вы хотите отсортировать численно (т. е. число в первом столбце может иметь разную ширину), попробуйте:

:%!sort -n

не беспокойтесь о =, он не изменит ни одной строки, он просто изменит их порядок.


вы можете сделать следующее, чтобы увидеть, отсортированные выход:

:!sort %

пояснение:

  • :: для входа в режим ex.
  • ! : позволяет запускать снаряд команда.
  • % : название файла открыть.

чтобы отсортировать файл, изменив его, вы можете перенаправить его вывод во временный файл, а затем скопировать его содержимое обратно в исходный файл:

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