如何舍入文件中的所有数字?

如何舍入文件中的所有数字?

如何将文件中的所有数字四舍五入到一定的精度?这可以用 awk 完成吗?

一行看起来像这样:

text - 0.1655456615 - 0.158645 - 0.846554 - 0.85251 ##

编辑:“-”是列分隔符。

答案1

使用以下方法更容易完成perl

perl -pe 's/[-+]?\d*(?:\.?\d|\d\.)\d*(?:[eE][-+]?\d+)?/sprintf("%.2g",$&)/ge'

答案2

如果您只有 awk 可用:

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
}'

相关内容