Linux awk排序降序无法正常工作

时间:2014-01-03 11:32:59

标签: linux sorting awk

我有两个文件需要排序。

我正在使用的命令是:

cat first-in.txt | awk '{print $2}' | cut -d '/' -f 3 | cut -d '^' -f 1 | sort -b -t . -k 1,1nr -k 2,2nr -k 3,3r -k 4,4r -k 5,5r | uniq > first-out.txt


cat second-in.txt | awk '{print $2}' | cut -d '/' -f 3 | cut -d '^' -f 1 | sort -b -t . -k 1,1nr -k 2,2nr -k 3,3r -k 4,4r -k 5,5r | uniq > second-out.txt

问题是: 我需要按降序对C​​ORRECTLY进行排序,因为现在只有文件2正确排序,但文件1没有正确排序。

我想知道我犯的错误

文件

All files are here including output are here

提前致谢。

2 个答案:

答案 0 :(得分:3)

我猜你的意思是错的:

4.2.4
4.2.3
4.2.20
4.2.2

您希望4.2.20高于所有这些,对吧?

您可以通过更改-k的{​​{1}}参数来解决此问题,将所有字段视为数字:

sort

答案 1 :(得分:1)

GNU / Linux 系统上,您可以将 sort -V 选项一起使用:

sed -r 's|.*/([^/^]*).*$|\1|' infile | sort -Vr

请注意, sed -r sort -V 都不是标准的。