![以数字形式对 VARCHAR 字段进行排序(用零填充)](https://linux22.com/image/101495/%E4%BB%A5%E6%95%B0%E5%AD%97%E5%BD%A2%E5%BC%8F%E5%AF%B9%20VARCHAR%20%E5%AD%97%E6%AE%B5%E8%BF%9B%E8%A1%8C%E6%8E%92%E5%BA%8F%EF%BC%88%E7%94%A8%E9%9B%B6%E5%A1%AB%E5%85%85%EF%BC%89.png)
我的文件中有如下数据
07020,6880A98805,03/09/2014
04374,6880698805,09/01/2014
05019,6880698805,07/01/2014
05020,2710239905,08/02/2007
05020,2710239905,08/31/2007
05021,2710239905,09/01/2007
05806,2710239905,08/30/2007
05807,8803975905,08/01/2014
05808,8803975905,06/01/2014
06019,6880698805,07/01/2006
06020,6880698805,03/09/2014
07807,8803975905,08/01/2014
13375,3470566899,07/16/2015
13376,3470566899,08/16/2016
058030,6880698805,01/12/201
058030,6880698805,01/12/2015
058030,6880698805,01/12/2015
100004,8803975905,03/09/2014
100005,8803975905,01/01/2015
100006,8803975905,02/01/2015
100007,8626833130,01/16/2016
100031,8803975905,01/12/2015
100031,8803975905,01/12/2015
100031,8803975905,01/12/2015
100032,8803975905,01/01/2015
我想按第一个字段(数字)、第二个字段(数字)和第三个字段对文件顺序进行排序。
使用论坛,我尝试了几次,但不知何故,我没有通过使用以下命令获得所需的订单:
sort -n -t',' -k1.1n,1.15n -k2.1n,2.10n -k3.7n,3.10n -k3.1n,3.2n -k3.4n,3.5n <file_name.csv>
有人可以让我知道出了什么问题吗?
答案1
看起来你们已经很接近了。但是,您无法对第二个字段进行数字排序,因为它不完全是数字(A
第一行中有一个)。
这对我有用:
sort -t, -k1,1n -k2,2 -k3.7,3.10 -k3.1,3.2n -k3.4,3.5n