排序数字值 - 由点或任何其他分隔符分隔 - 对 RHEL5 中的版本值进行排序

Posted

技术标签:

【中文标题】排序数字值 - 由点或任何其他分隔符分隔 - 对 RHEL5 中的版本值进行排序【英文标题】:Sort numbers values - separated by a dot or any other separator character - Sort versions values in RHEL5 【发布时间】:2018-11-14 10:07:08 【问题描述】:

Linux RHEL5 机器

如何对以下输入进行排序以在latest 变量中获取1.0.0.1019?尝试了-t-k-n,但没有帮助,或者我可能遗漏了一些东西。

$ echo '1.0.0
1.0.0.1018
1.0.0.1019
1.0.0.1019
1.0.0.7' | sort -u 

【问题讨论】:

-V 给了我:排序:invalid option -- V。似乎在 RHEL6 上可以正常工作。 sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n 在 RHEL5 中做到了 Stack Overflow 不是代码编写服务。请出示您的代码。由于 Stack Overflow 向您隐藏了关闭原因:寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误以及在问题本身。没有明确问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example。 【参考方案1】:

sort -n -t. -k1,4 按数字对输入进行排序。 字段由“.”分隔 仅按顺序使用前四个字段。

【讨论】:

不,我刚刚测试它没有给出预期的结果看到这个一次***.com/a/50691470/5866580 糟糕,我看到了问题所在。我很抱歉。【参考方案2】:

您能否尝试关注并让我知道这是否有帮助(使用 GNU sort 测试):

echo "1.0.0
1.0.0.1018
1.0.0.1019
1.0.0.1019
1.0.0.7" | sort --version-sort --field-separator=. --key=4 -r

上面将把1019放在第一位(最新的),以防你希望它排在最后,然后请在上面的代码中删除-r

【讨论】:

以上是关于排序数字值 - 由点或任何其他分隔符分隔 - 对 RHEL5 中的版本值进行排序的主要内容,如果未能解决你的问题,请参考以下文章

如何使用千位分隔符对数字进行排序

在 Pandas 中对包含数字和分隔符的字符串进行排序

Excel UDF - 对单元格内用逗号分隔的数字和文本进行排序

对具有不均匀空格的空格分隔列表进行排序

使用逗号分隔符的表格排序不起作用

无分隔线纯数字日期如何转换为斜杠、横杠、点分隔以及文字日期?