in fact i want to replace "-" by semicolon instead simple comma (Mea culpa)
I prefer sed or perl because after some experiences i have seen that sed or perl commands was more fast than awk...
# very fast, but it doesn't care for columns, it simply deletes the first two occurrences of "."
# and replaces the first ocurrence of "-" with ";". It might work for you, if there are no "."s
# and no "-" in the first column PLUS if there are always two "."s and one "-" in the second column.
sed 's/\.//;s/\.//;s/-/;/' input
I prefer using awk (as suggested by junior-helper) because it is easy for me to read and immediately understand. I believe the following sed script also does what you want, but for many users this is less readable and harder to understand:
sed '
:again
/^\([^;]*;[^.;]*\)[.]/s//\1/
t again
/^\([^;]*;[^-;]*\)-/s//\1;/
' Input
Fast is nice; but I'm not sure that sed is going to be any faster than awk for this. Which script do you find easier to understand?