[CentOS] Conversion of text in shell
Ross S. W. Walker
rwalker at medallion.com
Sat Oct 13 00:06:50 UTC 2007
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.
More information about the CentOS
mailing list