在'VI'编辑器中排序行

ErA*_*rAB 9 vi text-editor

如果我必须根据'='左边的值对以下行进行排序.但是排序应该在"="之后将选择扩展到列.Thtz是我们必须在'='之后对列进行排序::

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  
Run Code Online (Sandbox Code Playgroud)

这需要在'VI'编辑文件中完成.

结果应该是::

50080=00005464    
50098=00000875  ...etc.
Run Code Online (Sandbox Code Playgroud)

eum*_*iro 27

尝试:

:%!sort
Run Code Online (Sandbox Code Playgroud)

它将按字母顺序按整行排序.如果要按数字排序(即第一列中的数字可以有不同的widt),请尝试:

:%!sort -n
Run Code Online (Sandbox Code Playgroud)

不用担心=,它不会修改任何一行,它只会改变它们的顺序.

  • Vim有内部排序命令:`:%sort n` (5认同)

bjh*_*aid 19

这个答案迟了2年,但可能仍然相关,在可视模式下选择要排序和运行的块:

:!分类

这应该工作


cod*_*ict 5

您可以执行以下操作以查看已排序的输出:

:!sort %
Run Code Online (Sandbox Code Playgroud)

说明:

  • : :进入ex模式.
  • ! :允许您运行shell命令.
  • % :当前打开的文件的名称.

要通过更改文件对文件进行排序,可以将其输出重定向到临时文件,然后将其内容复制回原始文件:

:!(sort %>/tmp/tmp;cp -f /tmp/tmp %)
Run Code Online (Sandbox Code Playgroud)