[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] ajuda com scrip
From: |
Fabiano Caixeta Duarte |
Subject: |
Re: [shell-script] ajuda com scrip |
Date: |
Sun, 31 Aug 2008 12:27:52 -0300 |
2008/8/31 MrBiTS <address@hidden>:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
>> 6.800000 183.695282 134.784164
>> 6.816667 183.365829 134.770004
>> 6.833333 183.036392 134.756943
>> 6.850000 182.706940 134.745560
>> 6.866667 182.377228 134.735275
>> 6.883333 182.047226 134.726379
>> 6.900000 181.717224 134.718613
>> 6.916667 181.387222 134.712494
>> 6.933333 181.056946 134.707504
>> 6.950000 180.726669 134.703888
>> 6.966667 180.396393 134.701660
>> 6.983334 180.066116 134.700562
>> 7.000000 179.735840 134.701111
>> 7.016667 179.405579 134.702774
>> 7.033333 179.075256 134.705841
>> 7.050000 178.745300 134.710281
>> 7.066667 178.414978 134.716110
>> 7.083333 178.085022 134.723053
>> 7.100000 177.755005 134.731384
>> 7.116667 177.425293 134.741119
>> 7.133333 177.095581 134.752228
>>
>>
>> ... é um arquivo de coodernadas...
>> o que eu preciso é pegar a linha que tem a coordenda mais proxima de 180
>> (pode ser acima ou abaixo de 180) que esta na segunda coluna. este arquivo é
>> gerado diariamente e as coordenadas nunca são as mesmas.
>> alguem pode me ajudar?
>
> No seu exemplo, você tem 3 linhas com coordenadas próximas de 180.
>
>> 6.950000 180.726669 134.703888
>> 6.966667 180.396393 134.701660
>> 6.983334 180.066116 134.700562
>
> Além disso, as coordenadas 181, 182, 183 também são próximas de 180.
>
> Então, defina melhor seu problema. Se você precisa exatamente de todas as
> coordenadas 180, um grep 180 file.txt resolve para você
> mas, enquanto você não definir corretamente o problema, não é possível passar
> soluções mais exatas.
Eu até achei que ficou claro. Só acho que o título não diz nada. Isto
é um problema quando vamos consultar histórico.
Fiquei com preguiça de fazer a solução em bash+bc. Fiz em awk. Vejam aí.
cat proximo.awk
#!/usr/bin/awk -f
BEGIN{diff=1}
{
aux=180-$2;
if (aux<0)
aux*=-1;
if (aux<diff) {
tudo=$0;
diff=aux;
}
}
END{print tudo}
./proximo.awk arquivo
6.983334 180.066116 134.700562
--
Fabiano Caixeta Duarte
Especialista em Redes de Computadores
Linux User #195299
Ribeirão Preto - SP