Linux 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

问题是:我需要按降序正确排序,因为现在只有文件 2 正确排序,但文件 1 排序不正确。

想知道我犯的错误

文件

所有文件都在这里,包括输出都在这里

提前谢谢。

我猜你的意思是这是错误的:

4.2.4
4.2.3
4.2.20
4.2.2

你想4.2.20高于所有这些,对吧?

您可以通过更改 sort-k参数将所有字段视为数字来解决此问题:

.... -k 1,1nr -k 2,2nr -k 3,3nr -k 4,4nr -k 5,5nr ....

GNU/Linux 系统上,您可以使用 -V 选项进行排序

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

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

最新更新