我有一个文件,每行有多个数字,并用逗号隔开:
1,13,2,5
1,3
2,3,24
1,13,2,6
这只是一个小示例文件。在实际文件中,每行可以有数百个数字。
如何按字段对它们进行数字排序?结果应该是:
1,3
1,13,2,5
1,13,2,6
2,3,24
我尝试了sort -n -t,
,但是这会将行与数字进行比较,从而产生了错误的结果。
答案 0 :(得分:2)
实际上,这与sort
处理数字字段的方式有关。结果是您需要明确告诉sort
对每个关键字段进行数字排序:
sort -t, -k1,1n -k2,2n -k3,3n -k4,4n
如果您不这样做,那么GNU info
的{{1}}部分会稍加释义,
sort
将使用从[first]字段开始的所有字符,并且 扩展到该行的末尾作为主数字键。对于 绝大多数应用程序,处理范围更广的密钥 一个字段作为数字将不能满足您的期望。
巧妙地总结了您所看到的内容!
显然,显式地指定键将使sort
不适用于每行上具有任意长数字列表的文件。作为一种技巧,您可以尝试使用GNU sort
及其版本排序选项sort
。
-V
似乎可以对您的特定数据执行正确的操作。我已经在具有600个数字的行上测试了sort -V
,并且工作正常。