unix 排序的意外行为

问题描述 投票:0回答:2

嗨我正在尝试使用unix排序功能。我想按第三列对文件进行排序

这是文件的内容

tcsh 541% cat file
2,2587,769,629,629,629,890,890,890,890,89,801,0,184,24944,8018,42839
1,2622,867,686,686,686,880,880,880,880,88,792,0,246,25551,7977,43721
3,2636,736,700,700,700,1083,880,880,880,88,792,0,260,25439,7984,43758

当我尝试按第 1 列对其进行排序时,它起作用了

tcsh 533% sort -t, -nk1 file
1,2622,867,686,686,686,880,880,880,880,88,792,0,246,25551,7977,43721
2,2587,769,629,629,629,890,890,890,890,89,801,0,184,24944,8018,42839
3,2636,736,700,700,700,1083,880,880,880,88,792,0,260,25439,7984,43758

当我尝试按第 2 列对其进行排序时,它起作用了。

tcsh 534% sort -t, -nk1 file | sort -t, -nk2
2,2587,769,629,629,629,890,890,890,890,89,801,0,184,24944,8018,42839
1,2622,867,686,686,686,880,880,880,880,88,792,0,246,25551,7977,43721
3,2636,736,700,700,700,1083,880,880,880,88,792,0,260,25439,7984,43758

但是当我尝试按第 3 列对其进行排序时,它不起作用

tcsh 535% sort -t, -nk1 file | sort -t, -nk3
2,2587,769,629,629,629,890,890,890,890,89,801,0,184,24944,8018,42839
1,2622,867,686,686,686,880,880,880,880,88,792,0,246,25551,7977,43721
3,2636,736,700,700,700,1083,880,880,880,88,792,0,260,25439,7984,43758

tcsh 532% sort -t, -nk3 file
2,2587,769,629,629,629,890,890,890,890,89,801,0,184,24944,8018,42839
1,2622,867,686,686,686,880,880,880,880,88,792,0,246,25551,7977,43721
3,2636,736,700,700,700,1083,880,880,880,88,792,0,260,25439,7984,43758

预期输出是(根据 Knitt 的评论更新)

tcsh 532% sort -t, -nk3 file
3,2636,736,700,700,700,1083,880,880,880,88,792,0,260,25439,7984,43758
2,2587,769,629,629,629,890,890,890,890,89,801,0,184,24944,8018,42839
1,2622,867,686,686,686,880,880,880,880,88,792,0,246,25551,7977,43721

排序版本:

542% sort --version sort (GNU coreutils) 8.22 版权所有 (C) 2013 Free Software Foundation, Inc. 许可证 GPLv3+:GNU GPL 版本 3 或更高版本 。这是免费软件:您可以自由更改和重新分发它。在法律允许的范围内,不提供任何保证。由迈克·哈特尔和保罗·艾格特撰写

linux sorting unix tcsh
2个回答
0
投票

正如@knittl 在以下设置后建议的那样

setenv LC_ALL C

获得预期输出

tcsh 545% sort -t, -nk3 file
3,2636,736,700,700,700,1083,880,880,880,88,792,0,260,25439,7984,43758
2,2587,769,629,629,629,890,890,890,890,89,801,0,184,24944,8018,42839
1,2622,867,686,686,686,880,880,880,880,88,792,0,246,25551,7977,43721

获取有关 LC_ALL 的更多信息此处


0
投票

以下选项规范

-k
解决了问题:

sort -t, -nk3,3 file
© www.soinside.com 2019 - 2024. All rights reserved.