1

ファイルがあります。その内容は次のようなものです

#Time value
2.5e-5 1.3
5e-5 2.7
7.5e-5 1.1
0.0001 5.9
0.000125 5.8
0.00015 3
......

最終e的なファイルが

#Time value
0.000025 1.3
0.00005 2.7
0.000075 1.1
0.0001 5.9
0.000125 5.8
0.00015 3
...... 

シェルスクリプトはこれを行うことができますか?

for (any word that is using scientific notation)
{
    replace this word with decimal notation
}
4

2 に答える 2

4

Cの関数に精通している場合はprintf()、同様の組み込みシェル コマンドがあります。

$ printf '%f' 2.5e-5
0.000025
$ printf '%f' 5e-5
0.000050

これをスクリプトで使用するには、次のようにします。

while read line; do
    if [[ $line = \#* ]]; then
        echo "$line"
    else
        printf '%f ' $line
        echo
    fi
done < times.txt

#Time valueこれは、コメントをスキップするのに苦労します。その行を取り除くことができれば、さらに簡単になります。

while read a b; do printf '%f %f\n' $a $b; done < times.txt
于 2013-01-18T18:21:56.297 に答える
1

awk:

$ awk '$1~/e/{printf "%f %s\n", $1,$2}$1~!/e/{print}' file
0.000025 1.3
0.000050 2.7
0.000075 1.1
0.0001 5.9
0.000125 5.8
0.00015 3
于 2013-01-18T19:57:34.987 に答える