Ajuda usando o Awk para alterar um arquivo [fechado]

2

Estou usando o awk para simplesmente alterar algum texto em um arquivo, mantendo os valores como estão atualmente no arquivo.

O problema é que alguns dos valores estão mudando. os valores são mantidos se eu usar %f - no entanto, eu gostaria de eliminar os zeros à esquerda desnecessários. Isso é feito para a maioria dos valores ao usar %g , mas %g faz com que alguns dos valores sejam convertidos em números científicos, o que eu não quero.

Existe uma maneira de imprimir os números para o novo arquivo sem o zero final, assim como não converter nenhum número em notação científica?

Exemplos:

Quando eu aplico o seguinte ao arquivo que estou alterando, usando %f :

(rline == 4) {printf("%f\t %s\n",$1,"gsurf_intercept")}

resulta em:

1000000.000000   gsurf_intercept

quando eu uso a opção %g :

(rline == 4) {printf("%g\t %s\n",$1,"gsurf_intercept")}

resulta em:

1e+06    gsurf_intercept

o que eu quero é:

1000000     gsurf_intercept

Além disso, aplico isso a 70 linhas no arquivo que estou alterando e gostaria que o arquivo resultante produzisse duas colunas, cada coluna alinhada. Eu acho que nem cada item se alinha com o acima ou abaixo - isso acontece quando o item na primeira coluna é uma string e eu uso %s para ele.

    
por janet 10.04.2013 / 18:38

1 resposta

0

Você pode converter o ponto flutuante em um número inteiro e imprimi-lo. Não haveria zeros à direita e você poderia imprimir com o código de formatação% d ou% ld.

Acredito que a alteração de% f para% d possa ser útil, sem ter que fazer a conversão explicitamente (ou seja, deixar printf fazer a conversão).

    
por mdpc 10.04.2013 / 18:48