输入
aaaaa|bbbbb|ccccc|ddddd|5|5|4
aaaaa|bbbbb|ccccc|ddddd|10|10|1
wwwww|xxxxx|yyyyy|zzzzz|5|5|2
wwwww|xxxxx|yyyyy|zzzzz|10|10|2
输出
aaaaa|bbbbb|ccccc|ddddd|5|5|
wwwww|xxxxx|yyyyy|zzzzz|10|10|
用于索引的是:
第 1 至第 4 列(例如 aaaaa|bbbbb|ccccc|ddddd)
输出的逻辑如下:
比较具有相同索引的记录的最后一列,最后一列值较高的记录将打印到输出。
比较最后一列具有相同索引的记录,如果它们相等,则将第 5 列和第 6 列具有较大值的记录打印到输出中。
答案1
您只需sort
相应地使用 ing 即可完成此操作,然后为每个组选择第一个条目。
sort filename -t'|' -k1,4 -k7rn -k5,6rn | sort -t'|' -k1,4 -u
结果:
aaaaa|bbbbb|ccccc|ddddd|5|5|4
wwwww|xxxxx|yyyyy|zzzzz|10|10|2
这是做什么的
-t'|'
将字段分隔符设置为|
-k1,4
按前 4 个字段排序-k7rn
然后通过第七个字段进行反向和数值比较-k5,6rn
然后第五场和第六场也一样|
将其传递给另一种类型-k1,4 -u
代表-u
前4个字段的唯一性
因此,整个操作就像按照您想要的方式对文件进行排序,以便您想要的行首先显示在前 4 个字段的组中。然后只需抓住每组的第一行。