排序命令在此文件上无法按预期工作

排序命令在此文件上无法按预期工作

我正在尝试执行排序命令,但它对此文件不起作用。我不知道为什么。

 sort -n -k+3 employee > hired2

该指令称,这应该根据雇用的月份对员工进行排序。

这是文件。 MM/DD/YEAR 日期

mgt Cooper John     06151995   66000
mgt Davidson Darla  04151992   69500
mgt MacDonald George  06151985 70000
act Smith Thomas  04102002     56000
act Smith Alecia  04121991     65000
mis MacLeod Janice  01021977   90000
mis Mack Joe  02252003         85000
mis Winslow Sarah  02151995    58000
adm Smith Dexter  01021975    100000
mis Benneth Joan  08152001     79000
mgt Neason Elizabeth  10251998 65500
act NeSmith Donald  11301966   99500

这就是我得到的:

act NeSmith Donald  11301966    99500
act Smith Alecia    04121991    65000
act Smith Thomas    04102002    56000
adm Smith Dexter    01021975    100000
mgt     Cooper John     06151995    66000
mgt Davidson Darla  04151992    69500
mgt MacDonald George    06151985    70000
mgt Neason Elizabeth    10251998    65500
mis Bennett Joan    08152001    79000
mis Mack Joe    02252003    85000
mis MacLeod Janice  01021977    90000
mis Winslow Sarah   02151995    58000

有什么可能是错误的?不会是间距问题吧?

答案1

您按错误的列排序。列编号从 1 开始,月份列是第 4 个。所以试试这个:

sort -n -k+4 employee > hired2

答案2

一些旧版本的排序开始从零开始计数字段,并使用符号 +n 作为键的开始字段。较新版本的 sort 可能接受过时的符号,但我还没有检查它们是否从零开始计数。也许教练指的是/正在使用旧版本......干杯,drl

答案3

指令说这应该根据雇用的月份对员工进行排序

哪个指令?我在这里使用得到了预期的结果

$ sort -n -k 4 <file>

基于复制/粘贴您的测试数据 - 这意味着该文件包含空格而不是制表符(如果有的话)。

答案4

如果它也应该可读,我会对齐列:

$ column -t < employee | sort -nk4
adm  Smith      Dexter     01021975  100000
mis  MacLeod    Janice     01021977  90000
mis  Winslow    Sarah      02151995  58000
mis  Mack       Joe        02252003  85000
act  Smith      Thomas     04102002  56000
act  Smith      Alecia     04121991  65000
mgt  Davidson   Darla      04151992  69500
mgt  MacDonald  George     06151985  70000
mgt  Cooper     John       06151995  66000
mis  Benneth    Joan       08152001  79000
mgt  Neason     Elizabeth  10251998  65500
act  NeSmith    Donald     11301966  99500

相关内容