3

次のようなファイルがあります

 5.0000000000E-02 5.0000000000E+00 4.1000000000E-01 -4.8481128146E+01
 1.5000000000E-01 5.0000000000E+00 4.1000000000E-01 -4.6562934242E+01
 2.5000000000E-01 5.0000000000E+00 4.1000000000E-01 -4.8195946988E+01
 3.5000000000E-01 5.0000000000E+00 4.1000000000E-01 -4.8049939917E+01
 4.5000000000E-01 5.0000000000E+00 4.1000000000E-01 -4.8889348587E+01
-4.5000000000E-01 5.1400000000E+00 4.1000000000E-01 -4.8057104326E+01
-3.5000000000E-01 5.1400000000E+00 4.1000000000E-01 -4.8283429276E+01
-2.5000000000E-01 5.1400000000E+00 4.1000000000E-01 -4.7437231831E+01
-1.5000000000E-01 5.1400000000E+00 4.1000000000E-01 -4.7385816584E+01
-5.0000000000E-02 5.1400000000E+00 4.1000000000E-01 -5.1062140749E+01

すべての正の数 (特に最初の列) が実際の数の前に + に置き換えられることを望みます.何かアイデアはありますか?

4

4 に答える 4

3

printfで使用%+e:

$ awk '{for (i=1; i<NF; i++) printf("%+e ", $i)}' a

+5.000000e-02 +5.000000e+00 +4.100000e-01 -4.848113e+01 +1.500000e-01 +5.000000e+00 +4.100000e-01 -4.656293e+01 +2.500000e-01 +5.000000e +4.100000e-01 -4.819595e+01 +3.500000e-01 +5.000000e+00 +4.100000e-01 -4.804994e+01 +4.500000e-01 +5.000000e+00 +4.100000e-01 -4.8881935e -4.500000e-01 +5.140000e+00 +4.100000e-01 -4.805710e+01 -3.500000e-01 +5.140000e+00 +4.100000e-01 -4.828343e+01 -2.500000e-01 +5.140000e +4.100000e-01 -4.743723e+01 -1.500000e-01 +5.140000e+00 +4.100000e-01 -4.738582e+01 -5.000000e-02 +5.140000e+00 +4.100000e-01

于 2013-06-19T10:30:06.667 に答える
2

+最初の列に追加:

awk '{$1=$1>0?"+"$1:$1}1' file

+すべての列に追加:

awk '{for(i=1;i<=NF;i++)$i=$i>0?"+"$i:$i}1' file
于 2013-06-19T13:03:04.823 に答える
1

GNU シード

最初の例 ( 5.00..):

sed -r 's/(^|[^-])\b([0-9])\./\1+\2./g' file

.

pos の先行スペースを含む改訂された例。最初の列の数字 (  5.00..):

sed -r 's/^\s([0-9]\.)/\+\1/;s/(\s)([0-9]\.)/\1+\2/g' file

.

..出力:

+5.0000000000E-02 +5.0000000000E+00 +4.1000000000E-01 -4.8481128146E+01
+1.5000000000E-01 +5.0000000000E+00 +4.1000000000E-01 -4.6562934242E+01
+2.5000000000E-01 +5.0000000000E+00 +4.1000000000E-01 -4.8195946988E+01
+3.5000000000E-01 +5.0000000000E+00 +4.1000000000E-01 -4.8049939917E+01
+4.5000000000E-01 +5.0000000000E+00 +4.1000000000E-01 -4.8889348587E+01
-4.5000000000E-01 +5.1400000000E+00 +4.1000000000E-01 -4.8057104326E+01
-3.5000000000E-01 +5.1400000000E+00 +4.1000000000E-01 -4.8283429276E+01
-2.5000000000E-01 +5.1400000000E+00 +4.1000000000E-01 -4.7437231831E+01
-1.5000000000E-01 +5.1400000000E+00 +4.1000000000E-01 -4.7385816584E+01
-5.0000000000E-02 +5.1400000000E+00 +4.1000000000E-01 -5.1062140749E+01
于 2013-06-19T13:02:50.823 に答える