排序数字值 - 由点或任何其他分隔符分隔 - 对 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 中的版本值进行排序的主要内容,如果未能解决你的问题,请参考以下文章