сортировать строки в редакторе 'VI' - PullRequest
9 голосов
/ 05 октября 2010

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

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'.

RESULT должен быть ::

50080=00005464    
50098=00000875  ...etc.

Ответы [ 4 ]

26 голосов
/ 05 октября 2010

Попробуйте:

:%!sort

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

:%!sort -n

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

17 голосов
/ 02 апреля 2012

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

:! рода

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

5 голосов
/ 05 октября 2010

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

:!sort %

Пояснение:

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

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

:!(sort %>/tmp/tmp;cp -f /tmp/tmp %)
1 голос
/ 20 мая 2019

Я точно не знаю, когда за последние восемь лет vi встроил это, но теперь вы можете запустить:

:sort n

для сортировки числовых записей вместо использования :! дляsort команда.Смотри :help sort

...