Evitar conversão para notação científica em awk

0

Eu tenho um arquivo csv que contém centenas de colunas. Eu gostaria de subtrair o valor de uma coluna específica de um número estático e imprimir a linha inteira. Os valores dessa coluna são longos flutuantes. Quando faço a subtração o awk converte automaticamente o resultado para o formato científico. Eu poderia usar printf para obter a representação padrão, mas preciso obter a linha inteira e os campos de cada linha são muitos.

Existe uma maneira de evitar essa conversão automática ou pelo menos ignorá-la?

    
por dr.doom 04.03.2015 / 20:24

1 resposta

1

De man awk :

Uma expressão numérica é convertida em string substituindo expr por sprintf (CONVFMT, expr) , a menos que expr possa ser representado no host máquina como um inteiro exato, em seguida, ele é convertido em sprintf ("% d", expr) . Sprintf () é um AWK embutido que duplica a funcionalidade de sprintf (3) , e CONVFMT é uma variável interna usada para conversão interna do número para string e inicializada para "%. 6g ". Conversões de tipo explícito podem ser forçadas, expr "" é string e expr+0 é numérico .

Assim, você pode organizar a variável CONVFMT no campo de início ou de formato.

    
por 04.03.2015 / 20:41