如何将文件中的所有数字四舍五入到一定的精度?这可以用 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
}'