ファイル内のすべての数値を丸める方法は?

ファイル内のすべての数値を丸める方法は?

ファイル内のすべての数値を特定の精度に丸めるにはどうすればよいですか? awkでできますか?

1行は次のとおりです。

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

関連情報