Tenho os dados abaixo em um arquivo e quero imprimir apenas o valor mais alto após o hífen (-) da lista
entrada:
4.1-1
4.1
4.0-2
4.0-1
4.0
3.14-2
3.14-1
3.14
3.13.-1
3.13
3.12
3.11-2
3.11-1
3.11
a saída deve ser
4.1-1
4.0-2
3.14-2
3.13.-1
3.12
3.11-2
Eu tentei com abaixo
awk -F'-' '/-/{print $2}' <<EOF | sort -n | tail -n 1
4.1-1
4.1
4.0-2
4.0-1
4.0
3.14-2
3.14-1
3.14
EOF
não está dando a saída desejada, basicamente eu quero uma tag exclusiva e uma tag com o valor mais alto do hífen
3.13-1
3.13
3.12
3.11-2
3.11-1
3.11
então deve imprimir apenas 3,13-1 (é o valor mais alto de 3,13, já que 3,12 é único, deve imprimir e de 3,11-2 (porque é o valor mais alto de 3,11) como abaixo
3.13-1
3.12
3.11-2
você pode me orientar como posso conseguir thin no Unix
Cumprimentos
Se a entrada for classificada assim, com o valor "mais alto" para cada parte inicial (antes do traço) primeiro, isso pode ser reduzido a apenas imprimir a linha se a parte inicial for diferente da última linha:
(Não sei dizer pela sua descrição por que
3.13
deveria ser excluído da saída, é o único com aquela parte inicial fornecida3.13.-1
com um ponto extra.)Se não for esse o caso, você pode coletar as segundas partes mais altas e a linha completa correspondente e imprimi-las no final. Isso pode confundir a ordem de saída devido ao modo como os arrays funcionam no AWK, então você precisará classificá-los depois:
Com GNU
sort
ou compatível: