Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 我有一个apache软件版本的文件记录,需要根据版本对其进行排序_Linux_Unix_Awk - Fatal编程技术网

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
专家可以稍微清理一下,但这应该可以自己完成(这是假设版本号总是