当我尝试对以下文本文件进行排序时:

test1 3   
test3 2
test 4

使用命令

sort input

输出正是输入。这是输出的

od -bc input

:

0000000 164 145 163 164 061 011 063 012 164 145 163 164 063 011 062 012
          t   e   s   t   1  \t   3  \n   t   e   s   t   3  \t   2  \n
0000020 164 145 163 164 011 064 012
          t   e   s   t  \t   4  \n
0000027

这只是一个带有两个列的选项卡分隔的文件。当我做

sort -k 2

输出变为

test3 2
test1 3
test 4

这就是我所期望的。但是如果我这样做

sort -k 1

关于输入没有任何变化,而我期望“测试”在“ test1”之前进行排序。最后,如果我这样做

cat input | cut -f 1 | sort

我明白了

test
test1
test3

正如预期的。有逻辑上的解释吗?默认情况下到底应该做什么,类似于:

sort -k 1

?

我的Sort版本:

sort (GNU coreutils) 7.4

没有正确的解决方案

其他提示

从人类页面上:

* 警告 * 环境指定的语言环境会影响排序顺序。设置LC_ALL = C获取使用本机字节值的传统排序顺序。

所以它看起来 导出lc_all = c 必须提供帮助

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top