limita as saídas por awk

0

Estou tentando obter os resultados para uma coluna exata, que são maiores que 0 e menos que 10,000,000 .

O arquivo que eu tenho é o seguinte:

799,799,0,0,,0,0,1,0,0,0,0,1,1,1,1,1,5155,5155,,0.000000
673,273,0,0,,0,0,1,0,0,0,0,1,1,1,1,1,5155,5155,,0.000000
941,741,0,0,,0,0,1,1,0,0,0,0,0,0,0,0,5157,5157,,9999998.140000

A última coluna pode incluir qualquer valor entre 0.000000 e 10,000,000 .

Eu preciso que as saídas sejam restritas aos valores acima de 0 e inferiores a 10,000,000 .

Eu tentei o seguinte comando:

awk -F"," '$21<"10000000"' | awk -F"," '$21>"0.000000"'

mas as saídas de $ 21 são sempre 1000.000000

Abaixo uma amostra das saídas:

647,790,1,0,,0,0,1,0,0,0,0,1,1,1,1,1,5155,5155,,1000.000000
600,796,1,0,,0,0,1,0,0,0,0,1,1,1,1,1,5300,5300,,1000.000000
950,797,1,0,,0,0,1,0,0,0,0,1,1,1,1,1,5300,5300,,1000.000000
    
por Eng7 22.07.2015 / 09:13

2 respostas

1

$21<"10000000" make awk usou a comparação de strings em vez da comparação de números.

Tente:

awk -F, '$NF>0 && $NF<10000000' <file

Usar $NF sempre lhe dará o último campo, você pode adicionar ou remover outros campos de forma independente.

    
por 22.07.2015 / 09:19
1

Aqui está minha resposta:

gawk -F"," "$21<10000000 && $21 > 0" a

com esta saída:

941,741,0,0,,0,0,1,1,0,0,0,0,0,0,0,0,5157,5157,,9999998.140000

Eu não entendo como o seu awk está gerando os valores de 1000.000000, nem como ele é capaz de comparar números com strings (você citou os valores de dez milhões e zero em suas condições). Qual sistema você está usando?

    
por 22.07.2015 / 09:19

Tags