我正在尝试执行排序命令,但它对此文件不起作用。我不知道为什么。
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