如需要将文档中的29 到 44 行进行逆序排列,那么命令如下:
:29,44!sort -r 即可。
转自他人一:
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
转自他人二、
指令用法如下:
: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
转自他人三:
:[range]
sor[t][!] [i][u][r][n][x][o] [/{pattern}
/]
[range]
里的行排序。如果没有给出行范围,给所有行排
{pattern}
匹
{pattern}
{pattern}
匹
注意
引导和拖尾的空白差异会导致不相同的行。
{pattern}
/ 并且没有 [r] 标志位,跳过匹配
{pattern}
的文本,使得排序在匹配之后的内容上进行。
{-}\ze\d/
{-}
" 匹配任何文本,"\ze" 设置匹配结束位置,
{pattern}
的文本上进行,而不是如上
{pattern}
,不匹配 {pattern}
的行按照它们原来
{pattern}
的行分开。如果反向排
{pattern}
为空 (例如指定 //),则使用最近使用的搜
注意
":sort" 和 ":global" 一起使用并不能对匹配的行进行排序,这样做没有意义。
排序的细节取决于使用的库函数。不能保证它是 "稳定" 排序,也不能保证排序依赖于当
前的 locale。你要自己试试才知道。
排序可以被中断,但在整个过程里如果中断得太晚,最后可能会出现重复的行。这取决于
使用的系统库函数。
、、、、、、、、、、、、、、、、、、、、、
vi真的特别好用,可以好好研究研究!