Você pode simplesmente fazer isso com sort ing de acordo e escolher a primeira entrada para cada grupo.
sort filename -t'|' -k1,4 -k7rn -k5,6rn | sort -t'|' -k1,4 -u
Resultado:
aaaaa|bbbbb|ccccc|ddddd|5|5|4
wwwww|xxxxx|yyyyy|zzzzz|10|10|2
O que isso faz é
-
-t'|'define o delimitador de campo como| -
-k1,4ordem pelos primeiros 4 campos -
-k7rnpelo sétimo campo em comparação inversa e numérica -
-k5,6rnentão o mesmo com o quinto e sexto campo -
|canaliza isso para outro tipo -
-k1,4 -uo-urepresenta a exclusividade dos primeiros 4 campos
Assim, toda a operação é como ordenar o arquivo como você deseja, para que sua linha desejada seja exibida primeiro em grupos dos primeiros 4 campos. Em seguida, basta pegar a primeira linha para cada grupo.