bash 脚本:查找最大值、分组依据和按列排序

jit*_*hsk 3 bash shell

我有一个看起来像这样的文件:

b, 20, 434
a, 20, 23
a, 10, 123
a, 20, 423
a, 10, 89
b, 20, 88
b, 10, 133
b, 10, 99
Run Code Online (Sandbox Code Playgroud)
  1. 为 col1 和 col2 的每个唯一组合找到 col 3 的最大值。(例如所有 col3 的最大值a,10
  2. 按 col1 对输出进行分组(所有a行放在一起)
  3. 按 col2 对输出进行排序。

也就是说,输出应该是文件应该是

a, 10, 123
a, 20, 423
b, 10, 133
b, 20, 434
Run Code Online (Sandbox Code Playgroud)

如何在 bash 脚本中执行此操作?谢谢你的帮助。

Gis*_*nas 5

这可以完成以下工作:

< input sort -k3,3gr | sort -k1,1 -k2,2g -u
Run Code Online (Sandbox Code Playgroud)

它在第三个字段上以相反的顺序对数字进行排序,然后在第一个和第二个字段上排序,只取第一次出现(-u 表示唯一)。

您不需要填充,即如果您在输入中添加一行

a, 3, 31
Run Code Online (Sandbox Code Playgroud)

输出是:

a, 3, 31
a, 10, 123
a, 20, 423
b, 10, 133
b, 20, 434
Run Code Online (Sandbox Code Playgroud)