Linux 我有一个apache软件版本的文件记录,需要根据版本对其进行排序
我有一个文件,数据格式如下Linux 我有一个apache软件版本的文件记录,需要根据版本对其进行排序,linux,unix,awk,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命令,但无法得到正确的答案。我需要采取什么方法?我认为这会很难看,因为您要排序的列仅通过它们相对于行尾的位置来区分(最后三列)所以sort-nk,不会将其删除 您可以使用awk将这些字段移动到字符串的前面,然后使用s
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命令,但无法得到正确的答案。我需要采取什么方法?我认为这会很难看,因为您要排序的列仅通过它们相对于行尾的位置来区分(最后三列)所以
sort-nk,
不会将其删除
您可以使用awk
将这些字段移动到字符串的前面,然后使用sort点击它,然后使用sed从记录的前面刮去这些排序字段:
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'
也许一些sed
专家可以稍微清理一下,但这应该可以自己完成(这是假设版本号总是。