>我需要对具有以下名称的文件进行排序:
UN1
UN12
UR1
UR21
UN4
UN5
我尝试使用sort -n
和sort -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.