2010-10-05 54 views
8

如果我必須根據'='左邊的值對下列行進行排序。但排序應該同時將選擇擴展到'='後面的列。我們必須在'='之後對列進行排序::在'VI'編輯器中對行進行排序

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. 

回答

15

這個答案即將2年晚,但可能仍是相關的,在視覺模式選擇要進行排序並運行塊:

:排序

這應該工作

21

嘗試:

:%!sort 

它會根據全行按字母順序排序。如果你想通過數字來排序(即在第一列中的數字可以有不同的WIDT),然後嘗試:

:%!sort -n 

不要擔心=,也不會修改任何行,它只是改變自己訂購。

+5

Vim的有!內部排序命令:':%sort n' – Benoit 2010-10-07 11:45:13

5

你可以做以下看到排序輸出:

:!sort % 

說明:

  • ::進入Ex模式。
  • !:允許您運行shell 命令。
  • %:當前文件的名稱爲 open。

要改變它,你可以將其輸出重定向到一個臨時文件的文件排序,然後將其內容複製回原文件:

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

嗯,文件被損壞。我忘了告訴你sthin:這是一個xml文件,它具有一些屬性,如:: – ErAB 2010-10-05 08:16:10