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。它几乎必须是您正在使用的GNUsort
;传统的Unix系统不允许像您这样交错文件名和选项。-k3
表示法找不到第3列,因此它将所有行视为相同的。