2

我有一个包含脚本的文件夹,其名称模式是脚本版本UPDATE[x.y.z]在哪里。x.y.z

我需要的是一个 bash 脚本,它运行按其版本排序的脚本,因此字母排序不好。

例如UPDATE1.11.0应该在UPDATE1.2.3.

有没有我可以使用的比较器来指示排序顺序?如果没有,还能怎么做?

4

2 回答 2

1

如果您没有 GNU 排序(即您在 OSX 或 FreeBSD 或 NetBSD 中),您可以通过对不同字段进行排序来伪造它。

[ghoti ~]$ printf "foo1.2.3\nfoo1.11.0\nfoo1.4.1\nfoo1.4.0\n" | sort -nt. -k2,3
foo1.2.3
foo1.4.0
foo1.4.1
foo1.11.0
[ghoti ~]$

这错过了主要版本号,因为它不是由点分隔的。但无论如何它可能对你有用。

于 2012-06-12T14:13:41.160 回答
1

如果你有 GNUsort或其他支持它的版本,你可以使用版本排序。

sort -V

或者

sort --version-sort

另外,在我的回答中,我发布了一个比较版本的脚本。

于 2012-06-12T14:00:37.563 回答