排序命令无法按预期工作?

时间:2013-02-04 10:58:15

标签: shell sorting

我有一个像这样的数据集

tack2@domain.com,2009-11-27
overflow@domain2.com,2009-11-27
overflow@domain2.com,2009-11-27

当我运行命令删除column2的所有相同条目时

sort -t ',' -k2 stars.txt -u

它正在删除column1的条目,为了删除column2的重复条目,我必须输入-k3标志

sort -t ',' -k3 stars.txt -u

任何人都可以向我解释为什么会这样吗?为什么我必须在文件中的列中输入+1以删除列?

2 个答案:

答案 0 :(得分:2)

在我的系统中,一切正常:

$ sort -t, -k1 -u 1.txt 
overflow@domain2.com,2009-11-27
tack2@domain.com,2009-11-27

$ sort -t, -k2 -u 1.txt 
tack2@domain.com,2009-11-27

可能是由于您的语言环境。 你可以请用LANG = C来补充命令吗?

$ LANG=C sort -t, -k1 -u 1.txt 
$ LANG=C sort -t, -k2 -u 1.txt 

答案 1 :(得分:1)

这是典型的awk工作,不需要排序。我在这里添加一条短线,以防你想试一试。

awk -F, '!a[$2]++' file

将完成这项工作。