在'VI'编辑器中排序行

时间:2010-10-05 07:09:51

标签: text-editor vi

如果我必须根据'='左边的值对以下行进行排序。但是排序应该在“=”之后将选择扩展到列。 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  

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

结果应为::

50080=00005464    
50098=00000875  ...etc.

4 个答案:

答案 0 :(得分:26)

尝试:

:%!sort

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

:%!sort -n

不要担心=,它不会修改任何一行,只会更改订单。

答案 1 :(得分:17)

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

:!排序

这应该有效

答案 2 :(得分:5)

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

:!sort %

说明:

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

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

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

答案 3 :(得分:0)

我不确定vi过去八年的确切时间,但是现在可以运行:

:sort n

对数字条目进行排序,而不是使用:!来运行sort命令。参见:help sort