Chinaunix

标题: sort 的时候列为空的情况 [打印本页]

作者: lssliu    时间: 2011-03-09 17:05
标题: sort 的时候列为空的情况
本帖最后由 lssliu 于 2011-03-09 17:31 编辑

现有文件使用Tab分割,我是用第9列排序                                                                                                        

文件内容        
第1列 第2列 第3列 第4列 第5列 第6列 第7列 第8列     第9列          第10列    第11列 第12列    第13列    第14列
1        1        1                      1                        10000001        C1        C2        C3        C4        9
2        1                                1                        10000002        C1        C2        C3        C4        8
3        1                1              1                        10000003        C1        C2        C3        C4        7
4        1                        1      1                        10000004        C1        C2        C3        C4        6
5        1                                1                        10000005        C1        C2        C3        C4        5
6        1                                1        1              10000006        C1        C2        C3        C4        4
7        1                                1                1      10000007        C1        C2        C3        C4        3
8        1                                1                        10000008        C1        C2        C3        C4        2

使用的命令
sort -s -k9,9 XXX.dat

结果
8       1                               1                       10000008        C1      C2      C3      C4      2
5       1                               1                       10000005        C1      C2      C3      C4      5
2       1                               1                       10000002        C1      C2      C3      C4      8
1       1       1                      1                       10000001        C1      C2      C3      C4      9
3       1               1              1                       10000003        C1      C2      C3      C4      7
4       1                       1      1                       10000004        C1      C2      C3      C4      6
6       1                               1      1               10000006        C1      C2      C3      C4      4
7       1                               1              1       10000007        C1      C2      C3      C4      3

第9列应该是10000008对应的列。现在出现的现象是按照有内容的第9列进行排序。
他把为空的列忽略了....

求解决办法....
作者: seeLnd    时间: 2011-03-09 17:15
10000008  怎么会在第9列 ?
作者: lssliu    时间: 2011-03-09 17:17
tab分割,考过来的时候忽略了......
作者: seeLnd    时间: 2011-03-09 17:21
不明白你什么意思,为什么tab分割,就考过来忽略了?
把需求说清楚,并且数据格式要给对了
作者: lssliu    时间: 2011-03-09 17:34
不好意思,没说明白,tab分割:\t分割,是需求,这个没法改
内容有为空的情况,保存null。
作者: seeLnd    时间: 2011-03-09 17:57
sort 默认可不会去数你的tab个数,你觉得是第9列,sort看来就不是第9列了,
这样试试,指定separator:

sort  -t$'\t'   ....
作者: lssliu    时间: 2011-03-09 18:05
谢谢,测试之后好用,十分感谢,有一个问题不明白

sort 默认分割应该就是\t吧,为什么还需要指定?
作者: seeLnd    时间: 2011-03-09 18:06
默认是会合并多个空格或者tab,   指定后就是单个了




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2