我有一个带分隔符的文本文件,其中包含多个列,其中一些是文本,一些是数字。我想对多个字段进行排序,这些字段既包括文本字段,也包括数字字段。虽然 -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