For now, the only solution I have is:
Code:
VALUE=".........."
awk -v var="$VALUE" 'BEGIN{FS=OFS=" "}
NR==FNR{a[$0]=$0; next}
{for(i=4;i<9;i+=2)if($i in a){$(i+1)=var}}
{for(i=4;i<9;i+=2)if($i in a){print " ",$1,$2," "$3,$4," "$5,$6," "$7,$8," "$9;next}}
{print}' ID_to_be_changed my_file
In fact for few lines, some values do not have the format "x.xxxxExxx", but less characters (eg "0.0"). Then, the missing characters are "spaces" in order to keep the alignement:
Code:
2 982520 1.6134E-14 982530 1.7241E-17 982540 3.4164E-20 982550 1.2285E-24
2 992530 1.8708E-17 992541 6.2076E-22 992540 7.5646E-20 992550 7.0917E-22
2 162500 7.6697E-08 0 0.0000E+00 0 0.0000E+00 0 0.0000E+00
3 10030 2.0892E-01 30060 6.0786E-04 30070 1.3046E-05 40090 1.9438E-05
3 40100 1.1748E-04 60140 1.6964E-05 280660 0.0000E+00 290660 1.4066E-14
3 300660 5.0403E-09 290670 7.6644E-19 300670 2.4718E-10 300680 1.1002E-12
My solution works as long as I am not changing values located on the rows with "reduced" characters...(as long as nothing is changed in the row, awk does not re-concatenate the row, thus conserving the right spacing).
Also, using all the argument in print is not convenient...
How could I solve these two problems?