在bash中实现每组排序的最高值

Luk*_*der 4 bash scripting

使用 bash,我想对列表进行排序和过滤,以仅保留每个次要版本(每个组)的最后一个补丁版本(最高值)。例如:

$ cat data | sort -Vr
3.10.1
3.10.0
3.3.10
3.3.2
3.3.1
3.2.0
3.1.0
3.0.3
3.0.2
3.0.1
3.0.0
Run Code Online (Sandbox Code Playgroud)

我想得到这个结果:

3.10.1
3.3.10
3.2.0
3.1.0
3.0.3
Run Code Online (Sandbox Code Playgroud)

怎么做?

cho*_*oba 6

使用另一种排序 -u

sort -Vr data | sort -ru -t. -Vk1,2
Run Code Online (Sandbox Code Playgroud)
  • -t. 使用点作为字段分隔符
  • -k1,2 按前两个字段排序,即忽略补丁版本
  • -u 意思是“唯一的”,即它只打印每个排序相同的组的第一次出现