sort 命令疑问

sort 命令疑问

cat file

127.0.0.1       localhost.localdomain   localhost
192.1.104.147   bank

sort -t. +3 file

192.1.104.147   bank
127.0.0.1       localhost.localdomain   localhost

这个是数值比较,第3个分类域(147和1的比较),第1个数字都是1,接着比较第2个数字一个是4,一个是空值,那应该127.0.0.1排在前面呀,(空值和4比哪个大).

上面的执行结果不是很明白

谢谢      
不懂 你想做什么?      
[QUOTE=dearvoid]不懂 你想做什么?[/QUOTE]
147和1进行排序,排序结果是怎么样的?

我觉得应该是 1 在147前面。

而上面的命令正相反。请问这是为什么      
再给 sort 一个 -n 选项应该就可以了      
原因是这样的,执行LANG=C

排序结果,就对了

原来的语言变量是:en_US.UTF-8

真是想不通      
原来如此 看看精华区里的这个帖子吧: [thread=133147]locale 对字符排序的影响[/thread]      
摘自 sort 的 manual:
复制内容到剪贴板
代码:
If you use a non-POSIX locale (e.g., by setting `LC_ALL' to
`en_US'), then `sort' may produce output that is sorted differently
than you're accustomed to.  In that case, set the `LC_ALL' environment
variable to `C'.  Note that setting only `LC_COLLATE' has two problems.
First, it is ineffective if `LC_ALL' is also set.  Second, it has
undefined behavior if `LC_CTYPE' (or `LANG', if `LC_CTYPE' is unset) is
set to an incompatible value.  For example, you get undefined behavior
if `LC_CTYPE' is `ja_JP.PCK' but `LC_COLLATE' is `en_US.UTF-8'.