我有一个apache软件版本的文件记录,需要根据版本对它们进行排序

时间:2018-05-28 18:25:27

标签: linux unix awk

我有一个包含以下格式数据的文件,

File: Test.txt
org.apache.hive.v.0.3.5
org.apache.pig.v.0.2.3
org.apache.hadoop.0.1.1
org.apache.v.0.2.5

此记录应根据版本号进行排序,我尝试使用 awk 命令但无法得到正确的答案。我应该遵循哪种方法?

1 个答案:

答案 0 :(得分:1)

我认为这只会是丑陋的,因为你想要排序的列只能通过它们的位置与行尾(最后三列)比较而显着,所以awk不会出现削减它。

您可以使用awk -F"." 'BEGIN{OFS=" "}{print $(NF-2),$(NF-1),$NF,$0}' Test.txt | sort -nk1,3 | sed 's/^[0-9].*\s[0-9].*\s[0-9].*\s//g' 将它们移动到字符串的前面,然后使用sort命中它,然后使用sed从记录前面刮掉那些排序字段:

sed

也许有些<number>.<number>.<number>专家可以清理一下,但这应该可以自己做(这假设版本号总是-webkit-overflow-scrolling