在 unix 中按数字和字典对单个字段进行排序



>我需要对具有以下名称的文件进行排序:

UN1
UN12
UR1
UR21
UN4
UN5

我尝试使用sort -nsort -h,但这些不起作用。我希望输出为:

UN1
UN4
UN5
UN12
UR1
UR21

重要的是,我不能提前对列表中的名字做出任何假设,所以我不能将前两个字符切成一列,将尾随数字切成另一列以区别对待它们。

有什么想法吗?

从手册页

-V, --version-sort 文本中(版本)数字的自然排序

sort -V产生:

UN1
UN4
UN5
UN12
UR1
UR21

似乎是你想要的。

编辑

来自评论:Note that -V is a gnu extension

我的排序没有-V:-(

一些线路噪声:

perl -E 'say sort {($a =~ s/d+//r) cmp ($b =~ s/d+//r) or ($a =~ s/D+//r) <=> ($b =~ s/D+//r)} <>'

蒂姆托迪 &c.

相关内容

  • 没有找到相关文章

最新更新