我有一个文件a.csv,内容类似于下面的

a,b,c
a  ,aa,  a
a b, c, f
a , b, c
a b a b a,a,a
a,a,a
a aa ,a , t

我正在尝试使用 sort -k1 -t,a.csv 对其进行排序 但是它给出了以下结果

a,a,a
a  ,aa,  a
a aa ,a , t
a b a b a,a,a
a , b, c
a,b,c
a b, c, f

这不是第一列的实际排序。我做错了什么?

有帮助吗?

解决方案

您必须将结束位置指定为1:

sort -k1,1 -t, a.csv

其他提示

尝试一下: sort -t,-k1,1 a.csv

该男子建议省略结束字段,它将对从字段 n 开始的所有字符进行排序,直到该行结束:

-k POS1[,POS2]'
     The recommended, POSIX, option for specifying a sort field.  The
     field consists of the part of the line between POS1 and POS2 (or
     the end of the line, if POS2 is omitted), _inclusive_.  Fields and
     character positions are numbered starting with 1.  So to sort on
     the second field, you'd use `-k 2,2' See below for more examples.

请改为尝试:

sort -k 1,1 -t , a.csv

-k 1 排序为“从第一个字段开始排序”。 - 因此,首先有效地违背了通过论证的观点。

排序手册页中对此进行了记录,并在示例部分中发出警告:

  

在第二个字段上以数字方式排序   并通过排序解决关系   按字母顺序排列第三和第四   第五场的人物。使用`:'作为   字段分隔符:

     

$ sort -t:-k 2,2n -k 5.3,5.4

     

请注意,如果您已编写 -k 2    -k 2,2 sort 将使用all   从第二个开始的人物   字段并延伸到最后   line作为主数字键。对于   大多数应用程序,   处理跨越多个的密钥   字段作为数字将不会做你   期望的。

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