Unix排序只对一列进行排序

时间:2010-11-25 05:08:57

标签: unix shell command-line

我有一个制表符分隔的行,我想只对第一列进行排序。

可以使用Unix排序来实现吗?

u.s 2||`` U.S ''||527 || 107
u.s.    2||`` U.S. ''||532 || 107
us. 2||Us.||532 || 112
u.s.    2||U.s.||629 || 112
us. 2||US.||6444 || 112
us  2||US||8655700 || 27
u.s 2||U.s||992 || 112

必须使用

进行排序
u.s
u.s.
us. 
u.s.
us. 
us  
u.s 

不考虑点数。在使用sort -k1之后对上面的内容进行排序。 我们。和美国不在一起。

4 个答案:

答案 0 :(得分:2)

如果您按第一个字段排序,除非您想忽略该行的其余部分,否则没有理由指定该键。如果你想这样做,你需要做-k1,1。您需要指定C区域设置(或者您可以使用同义POSIX区域设置来忽略这些区域。

LC_COLLATE=C sort -k1,1 inputfile

LC_COLLATE=C sort inputfile

答案 1 :(得分:1)

您可能需要为排序设置区域设置,并将其设置为C语言环境:

LANG=C sort -k1 data.file

答案 2 :(得分:0)

我相信你在寻找:

sort -k 1 filetosort

Tab是一个空格分隔符,它是排序的默认分隔符。

答案 3 :(得分:0)

我的排序(在Linux上)可以做到。我不知道它有多便携。在BASH:

sort -k1 -t$'\t'

-k1给出了键列的id,-t指定了字段分隔符。