以下是示例文本文件:
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 排序不起作用”,并检查了一些答案。但无法理解我做错了什么。
答案1
但它不起作用。
它确实排序了;输出的顺序与输入的顺序不同。它只是没有按照你期望的方式排序。
123777
排序在前,23456
因为在您的语言环境中1
排序在前2
(我猜在任何正常的语言环境中都是如此)。如果您想要数字然后你需要告诉它sort
:
- 通过使用全局选项
-n
:sort -n -t':' -k2
n
或者在键的定义中包含:sort -t':' -k2n
。