Linux下sort命令的使用

      Linux的sort命令是coreutils的一部分,最详细的介绍可以参见coreutils文档中“Operating on Sorted Files”一章。我在实际应用的过程中有几点体会:
       - 在对很大的文件进行排序的时候,sort会自动的使用外部排序,即通过分隔文件排序再归并的方法完成最后的排序。但是,sort会使用系统默认的临时文件 夹存储排序过程中的临时文件,当默认临时文件夹的磁盘空间不足以存储临时文件时,排序就会失败。因此在对很大的文件进行排序时,最好用-T参数指定临时文 件夹,用磁盘空间充足的文件夹作为排序时的临时文件夹。
       - sort默认用Tab与Space作为分隔符,所以如果在参数中写sort -t /t,sort会认为分隔符是/t,而不是Tab。换句话说如果希望排序的元素如果是“1/t2/t3”就应该这样设置。我就在这里吃了些亏。因此如果需 要排序的文件本来就是用Tab分隔好的,就不需要指定分隔符了,用默认的就好了。
       - 如果待排序的元素是URL(或者含有许多符号的字符串),就要小心了。sort在字符串的比较时会忽略对一些字符的比较,例 如:"www.sohu.com.cn"与"www.so.gou.com.cn"的比较,如果按照严格的字符串比较,"www.soh"中的'h'的 ASCII码大于"www.so."中的'.',因此"www.sohu.com.cn"应该大于"www.so.gou.com.cn",但是sort 在比较的结果正好相反。sort对于特殊字符的处理规则我没有查到,在设置参数中我也没有找到相应的设置。总之,如果只是想实现一个排序还是可以用 sort的,但是如果想对sort排序后的文件进行二分查找,由于不知道比较规则,就不能实现了(因此在对字符串排序时需要仔细考虑,我就是自己写外排程 序进行排序的,也可以将URL转换成MD5编码再用sort进行排序)。这也算是sort的一点瑕疵吧。

       - sort对分隔符的要求是一个字符,换句话说如果是字符串就不行了。这在实际使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值