这是一个示例文本文件:
Peter:123777:ETA
Joan:16466:HLT
John:11223:HR
David:23456::::FSI
George::::876543:ECS
任务是对第二个字段进行排序,所以我做了以下事情:
cat input.txt | tr -s ":" | cut -d':' -f1,2,3 | sort -t':' -k2
这是输出:
John:11223:HR
Peter:123777:ETA
Joan:16466:HLT
David:23456:FSI
George:876543:ECS
但它没有排序。关于我做错了什么的任何想法?
我尝试使用“Linux 排序不起作用”进行搜索并检查了几个答案。但无法理解我做错了什么。
它确实排序;输出中的序列与输入中的序列不同。它只是没有按照您预期的方式排序。
123777
排序之前,23456
因为在您的语言环境中1
排序之前2
(我想在任何理智的语言环境中都是如此)。如果你想要数字排序,那么你需要告诉这个sort
:-n
:sort -n -t':' -k2
n
在键的定义中包括:sort -t':' -k2n
.