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