Ross S. W. Walker
Ross S. W. Walker wrote:
roland hellström wrote:
OK! I finally figured out the solution for all you people out the eager to hear it!!! it was infact very very similar to the last line I sent...
this is it
sed 's/([^.]*).([^,]*),([^.]*).([^e]*)e(.*)/\1,\2 & $\3,\4 \cdot 10^{\5}$\\/'
omg I feel so h4xx0r figuring that out myself lol Thx for the help all :)
I am surprised you got it all in 1 regex, I was aiming more for:
sed 's/,/ & /;s/./,/;s/(.*)e(.*)/\1 \cdot 10^{\2}/'
whoops, I made a mistake:
sed 's/,/ & /;s/./,/g;s/(.*)e(.*)/\1 \cdot 10^{\2}$\\/'
You need the 'g' option in the second substitute to perform a global, and of course the proper cdot expression.
Ok, not to toot my own horn, but it turns out that doing 3 simple regexs is actually quicker then 1 complex regex, though with today's processors you need to run it over a large set to see:
# wc -l test 20691 test
# time sed 's/([^.]*).([^,]*),([^.]*).([^e]*)e(.*)/\1,\2 & $\3,\4 \cdot 10^{\5}$\\/' test >/dev/null
real 0m0.175s user 0m0.174s sys 0m0.000s
# time sed 's/,/ & $/;s/./,/g;s/(.*)e(.*)/\1 \cdot 10^{\2}$\\/' test >/dev/null
real 0m0.141s user 0m0.139s sys 0m0.001s
So not only is it simpler to divide and conqueror a problem, but often it produces the best results...
-Ross
______________________________________________________________________ This e-mail, and any attachments thereto, is intended only for use by the addressee(s) named herein and may contain legally privileged and/or confidential information. If you are not the intended recipient of this e-mail, you are hereby notified that any dissemination, distribution or copying of this e-mail, and any attachments thereto, is strictly prohibited. If you have received this e-mail in error, please immediately notify the sender and permanently delete the original and any copy or printout thereof.