Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 排序命令未按预期工作?_Shell_Sorting - Fatal编程技术网

Shell 排序命令未按预期工作?

Shell 排序命令未按预期工作?,shell,sorting,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 它正在删除第1列的条目,为了删除第2列的重复条目,我必须输入-k3标志 sort -t ',' -k3 stars.txt -u 谁能向我解释一下为什么会这样?为什么我必须在文件中的

我有一个这样的数据集

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
它正在删除第1列的条目,为了删除第2列的重复条目,我必须输入
-k3
标志

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

谁能向我解释一下为什么会这样?为什么我必须在文件中的列中输入+1才能删除该列?

在我的系统中,所有操作都正常:

$ 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 

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

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

将完成此项工作。

您能否显示
-k2
-k3
案例的输出?也许你也应该确定你正在使用的O/S。它几乎必须是您正在使用的GNU
sort
;传统的Unix系统不允许像您这样交错文件名和选项。
-k3
表示法找不到第3列,因此它将所有行视为相同的。