Por favor, considere um arquivo de texto chamado example
contendo os seguintes dados:
0 0.2667328325084663 0.02243994752564071
0 1.86630577374265 0.02243994752564048
0 0.2401209140718633 0.02243994752564071
Classificamos example
a 3ª coluna primeiro e depois a 2ª coluna pelo seguinte comando:
sort -g -k 3,3 -k 2,2 <example > sortedExample
O novo arquivo sortedExample
agora contém o seguinte:
0 1.86630577374265 0.02243994752564048
0 0.2401209140718633 0.02243994752564071
0 0.2667328325084663 0.02243994752564071
Como pode ser visto na 2ª coluna, o valor dos dados da primeira linha é maior que o da segunda linha. Isso é esperado, pois a primeira linha da terceira coluna 0.02243994752564048
é menor que a da segunda 0.02243994752564071
.
O problema é que 0.02243994752564048
e 0.02243994752564071
são iguais até a décima quinta casa decimal, portanto podemos assumir que eles têm o mesmo valor em uma ampla gama de aplicações.
Existe alguma maneira de dizer sort
para considerar apenas as primeiras N
casas decimais, por exemplo, 15 aqui?
@steeldriver deu a resposta mais eloquente (digamos que usamos
GNU version of sort
e gostaríamos de considerar os primeiros 6 pontos decimais):resultando em:
Com base nesta resposta :
Primeiro truncamos (digamos até a 6ª casa decimal) a 2ª e 3ª colunas com o seguinte (no momento isso foi aplicado duas vezes para cada coluna, vou editar minha resposta com o passar do tempo):
Em seguida, o comando mencionado:
O resultado desejado é obtido como: