A resposta pode ser encontrada em man awk :
A numeric expression is converted to string by replacing expr with
sprintf(CONVFMT, expr)
, unless expr can be represented on the host machine as an exact integer then it is converted tosprintf("%d", expr)
.
Sprintf() is an AWK built-in that duplicates the functionality ofsprintf(3)
, and CONVFMT is a built-in variable used for internal conversion from number to string and initialized to"%.6g"
.
Portanto, enquanto você chama a função gsub
, que opera com a string awk , converte o campo por sprintf("%d", 1.300E+11)
em 130000000000
, mas não existe tal texto na linha, então nada substitui.