gpt4 book ai didi

bash - UNIX:按编号/版本排序文件,不带 0 填充

转载 作者:行者123 更新时间:2023-11-29 09:08:51 27 4
gpt4 key购买 nike

最终,我想将最新版本设置为环境变量,因此补充了所选答案(这为我提供了正确的排序):

export LATEST_VERSION=$(printf '%s\n' * | sort -rV | head -1)

我有一个具有以下目录名称的目录:

ls -1r .
2.0
1.8
16.1
16.0
15.5
15.0
14.5
14.1
14.0
1.3
1.2
1.1.5
1.1.3
1.1.2

我想对它们进行排序以获得最新的发布版本:

ls -1r . | head -1
16.1

所以基本顺序应该是这样的:

16.1
16.0
15.5
15.0
14.5
14.1
14.0
2.0
1.8
1.3
1.2
1.1.5
1.1.3
1.1.2

如有任何帮助,我们将不胜感激。越简单越好,但我愿意接受任何解决方案。谢谢!

最佳答案

现代 GNU 排序提供了一个 -V 标志,用于根据版本号规则进行排序:

$ printf '%s\n' * | sort -rV
16.1
16.0
15.5
15.0
14.5
14.1
14.0
2.0
1.8
1.3
1.2
1.1.5
1.1.3
1.1.2

请注意,上面的代码使用ls。作为一般规则,you shouldn't parse the output of ls(1) .

文档

来自人工排序:

-V, --version-sort
natural sort of (version) numbers within text

以上内容来自 GNU 手册页。

FreeBSD's sort还支持 -V

操作系统

Apple 的 sort是 2005 年的 GNU 排序,早于对 -V 选项的支持。可以找到解决方法 here . (帽子提示:l'L'l,mklement0)

关于bash - UNIX:按编号/版本排序文件,不带 0 填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38276078/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com