Comando shell para localizar o número mais alto. Mas o problema é duplo dígito após o decimal não é considerado o mais alto

1

Usando o script de shell para encontrar o maior número dos valores mencionados em uma variável.

Por exemplo

VAR="2011.2 / 2009.1 / 2011.10"

O script de shell deve identificar 2011.10 é o maior de três O resultado deve ser 2011.10

se VAR="2011.10 / 2011.1" saída deve ser 2011.10

se VAR="2010.1 / 2011.2" saída deve ser 2011.2

A questão aqui é que, após o ponto decimal, o número de dois dígitos é considerado menor que um dígito após o ponto decimal.

    
por user8554534 27.10.2017 / 14:28

1 resposta

2

O que você solicita é mais como uma comparação de números versão .

tr + sort + solução head :

v="2011.2/2009.1/2011.10"
tr '/' '\n' <<<"$v" | sort -rV | head -1
2011.10

Casos de teste:

v="2011.1/2011.2"
tr '/' '\n' <<<"$v" | sort -rV | head -1
2011.2
v="2011.1/2011.2/2011.101"
tr '/' '\n' <<<"$v" | sort -rV | head -1
2011.101
    
por 27.10.2017 / 14:39

Tags