分享

Vim局部排序

 北漂之邬 2014-01-23
转自他人的成果
1:
如果我们想以第4列数据进行排序,可以在vim中如此做:
1,12!sort -r -n -k4.1,5

-r 是降序排序
-n 是按数字大小排序
-k,表示根据那个字段排序,4.1,表示第4列第一个字符开始 ,5表示到第5个字段为结束
-t 后面跟分隔符,缺省是空格

2:
在VIM里面, 如果你要把从当前行以下20行按字母顺序排序

只要输入:.,+20!sort

3:
用vi 來看log檔常要排序一下資料

可以用外部的sort 程式協助排序

令用法如下:
:1,$!sort -k 3
表示從第1列開始, 以第3 欄資料進行排序

:4,$!sort -k 3
表示從第4列開始, 以第3 欄資料進行排序 給有標題的文件用

:1,$!sort -k 4 -t"."
表示從第1列開始, 以第8 欄資料進行排序, 分欄字元是 "."
結果會如下 :
192.168.1.20
192.168.1.218
192.168.1.22
218 竟然排在 22 的前面? 是因為以"文字順序"排序的關係

:1,$!sort -k 4 -t"." -n
表示從第1列開始, 以第4 欄資料進行排序, 分欄字元是 "." , 並且依數字大小而非文字順序排序
結果會改變如下
192.168.1.20
192.168.1.23
192.168.1.218



假设有如下数据,以空格为数据列分割:
1 何维川 124.63 172 0.72
2 张子寅 99.67 172 0.58
3 周广滨 93.34 188 0.50
4 陈兴 41.86 188 0.22
5 薛永成 26.68 188 0.14
6 张永福 18.25 188 0.10
7 李华田 18.25 188 0.10
8 葛祥营 11.89 164 0.07
9 王天民 -16.55 156 -0.11
10 刘峰 -16.19 152 -0.11
11 郭居岗 -86.73 152 -0.57
12 杨军 -213.45 152 -1.40

如果我们想以第4列数据进行排序,可以在vim中如此做:
1,12!sort -r -n -k4.1,5

-r 是降序排序
-n 是按数字大小排序
-k,表示根据那个字段排序,4.1,表示第4列第一个字符开始 ,5表示到第5个字段为结束
-t 后面跟分隔符,缺省是空格

运行后数据如下:
7 李华田 18.25 188 0.10
6 张永福 18.25 188 0.10
5 薛永成 26.68 188 0.14
4 陈兴 41.86 188 0.22
3 周广滨 93.34 188 0.50
2 张子寅 99.67 172 0.58
1 何维川 124.63 172 0.72
8 葛祥营 11.89 164 0.07
9 王天民 -16.55 156 -0.11
12 杨军 -213.45 152 -1.40
11 郭居岗 -86.73 152 -0.57

10 刘峰 -16.19 152 -0.11

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多