[CentOS] Conversion of text in shell

roland hellström arwinkahalarak at hotmail.com
Fri Oct 12 22:14:39 UTC 2007

----------------------------------------> Subject: RE: [CentOS] Conversion of text in shell> Date: Fri, 12 Oct 2007 17:57:54 -0400> From: rwalker at medallion.com> To: centos at centos.org>> roland hellström wrote:>>>> Indeed this is a chalmers student. The purpose of asking>> though is to learn it, because I find it very hard to learn>> without seeing an example of it.>> Thx for the reply it seemed to work well :) Although it would>> be interesting to see if this could be done with the sed>> command somehow?>> Thx in advance>>>> Then let me help you think it out:>> Given a text file with this data:> 1.1,3.19e-4> 1.2,3.05e-3> 10.5,9.14e-8 <- I'm guessing this was suppose to be scientific not>> Convert to a text file:> 1,1 & $3,19 \cdot 10^{-4}$\\> 1,2 & $3,05 \cdot 10^{-3}$\\> 10,5 & $9,14 \cdot 10^{-8}$\\>> Look for the pattern match ups:> 1.1,3.19e-4> 1,1 & $3,19 \cdot 10^{-4}$\\>> 1.2,3.05e-3> 1,2 & $3,05 \cdot 10^{-3}$\\>> 10.5,9.14e-8> 10,5 & $9,14 \cdot 10^{-8}$\\>> It looks like:> 1) decimals converted to commas> 2) commas converted to " & "> 3) "e" converted to " \cdot 10^{<>}$\\"> 4) <> substituted for whatever comes after the "e">> Now if you convert decimals to commas BEFORE you convert> commas to " & " then you will have garbage, so you need> to convert commas to " & " first, then decimals to> commas, then apply the conversion w/ substituion.>> Substitution is handled with the \(\) operator like such:>> echo "this is a test" | sed -e 's/\(.*\) is a \(.*\)/\2 is NOT a \1/'>> Will output: "test is NOT a this">> Can be done in 3 steps, sed can take multiple operations> if you separate them with ;>> >> PS Fix your mail client to post in plain text and put> your reply text at the bottom of the email instead of> the top.>> ______________________________________________________________________> 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.>> _______________________________________________> CentOS mailing list> CentOS at centos.org> http://lists.centos.org/mailman/listinfo/centos

Ok thx for the great reply :)

I used sed 's/\([^,]*\),\([0-9.]*\)e\(.*\)/\1 \& $\2 \\cdot 10^{\3}$\\\\/'
and got the result resolving everything except the dots converted to commas. I am thinking there is a way to do this without the separator ;?
Thx //
Express yourself instantly with MSN Messenger! Download today it's FREE!

More information about the CentOS mailing list