É mais fácil de fazer com perl
:
perl -pe 's/[-+]?\d*(?:\.?\d|\d\.)\d*(?:[eE][-+]?\d+)?/sprintf("%.2g",$&)/ge'
Como posso arredondar todos os números em um arquivo que chame várias colunas de números até uma certa precisão? Isso pode ser feito com o awk?
Uma única linha é assim:
text - 0.1655456615 - 0.158645 - 0.846554 - 0.85251 ##
EDIT: '-' é um delimitador de coluna.
Se você tiver apenas o awk disponível:
awk '{
while (match($0, /[0-9]+\.[0-9]+/)) {
printf "%s%.2f", substr($0, 1, RSTART-1), substr($0, RSTART, RLENGTH)
$0 = substr($0, RSTART+RLENGTH)
}
print
}'