我可以使用 unix 排序根据不同类型的多个键(字符串和数字混合)对文件进行排序吗?

我可以使用 unix 排序根据不同类型的多个键(字符串和数字混合)对文件进行排序吗?

我有一个带分隔符的文本文件,其中包含多个列,其中一些是文本,一些是数字。我想对多个字段进行排序,这些字段既包括文本字段,也包括数字字段。虽然 -n 允许将内容视为数字,但它对文本的处理方式很奇怪,省略该选项会导致数字被视为文本。有没有办法将字段与处理方式关联起来?

例子:

输入文件:

Doggy,20
Cat,20
Cat,5
Bird,100
Bat,5

根据第一个字段,然后根据第二个字段进行所需排序:

Bat,5
Bird,100
Cat,5
Cat,20
Doggy,20

的结果sort input.txt -t, -k1,1 -k2,2

Bat,5
Bird,100
Cat,20
Cat,5
Doggy,20

注意:Cat,20 先于 Cat,5

的结果sort input.txt -t, -n -k1,1 -k2,2

Bat,5
Cat,5
Cat,20
Doggy,20
Bird,100

注:Bird,100 为最后一位

答案1

将数字处理仅附加n到您想要按此方式排序的字段。在您的示例数据中,字段 1 是文本,字段 2 是数字,因此将 only 添加n到字段 2 的定义中:

sort input.txt -t, -k1,1 -k2,2n

或者

sort input.txt --field-separator=, --key=1,1 --key=2,2n

相关内容