Bash Scientific Notation


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Bash Scientific Notation
# 1  
Old 07-21-2008
Bash Scientific Notation

Hello there,

I have a script that must be written in bash that has to deal with reading in values from a file (in scientific notation), and requires executing some mathematical operations with them. What is the easiest way to go about doing this/converting it to float to use | bc, etc.?

Thanks!
# 2  
Old 07-22-2008
This should be a basic example:
Code:
a=65; b=1.11; c=30 ; echo "scale= $a; $b ^ $c" | bc

For anything else try to elaborate your request.
# 3  
Old 07-22-2008
I think the main problem here is the "scientific notation". I guess you mean numbers like 1.234e29 which are not supported by bc either?

Maybe something like this ...?

Code:
echo "1.234e23 9.876e14" | sed -e 's/ /*/' | perl -nle 'print eval $_'

Concur with danmero, an example of the input and expected output would help.
# 4  
Old 07-22-2008
bc can do the job
Code:
echo "1.234e23 9.876e14" | sed 's/e/*10^/g;s/ /*/' | bc

# 5  
Old 07-22-2008
Good catch; thanks for the correction.
# 6  
Old 07-22-2008
Or just awk:
Code:
awk -v a="1.234e23" -v b="9.876e14" 'BEGIN{print (a * b)}'

# 7  
Old 08-18-2008
Thanks all, in case you are interested -- I ended up using sed:

floatVar1=$(echo $Var1 | sed 's/\([0-9]*\(\.[0-9]*\)\?\)[eE]+\?\(-\?[0-9]*\)/(\1*10^\3)/g;s/^/scale=30;/'| bc)

There are some difficulties with the specific scientific notation my data files were using. (having an extra + after the E, 1.00e+1 = 10), so I had trouble getting bc to work, but I may have just messed up. However, the idea behind the question was supposed to be specifically how to convert something from scientific notation to float. Sorry for the confusion.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Print multiple columns in scientific notation

Hi everybody, I have file 1 with 15 columns, I want to change the formatting of the numbers of columns 10,11 and 12 in the scientific notation. I used the Following script: awk '{print $10}' file1.dat | awk '{printf "%.2e\n", $1}' > file2.dat awk '{print $11}' file1.dat | awk '{printf... (7 Replies)
Discussion started by: supernono06
7 Replies

2. Shell Programming and Scripting

Help with filter result (scientific notation) by using awk

Input file: data1 0.05 data2 1e-14 data1 1e-330 data2 1e-14 data5 2e-60 data5 2e-150 data1 4e-9 Desired output: data2 1e-14 data1 1e-330 data2 1e-14 data5 2e-60 data5 2e-150 I would like to filter out those result that column 2 is less than 1e-10. Command try: (1 Reply)
Discussion started by: cpp_beginner
1 Replies

3. Shell Programming and Scripting

Perl: scientific notation to decimal notation

hello folks, I have few values in a log which are in scientific notation. I am trying to convert into actual decimal format or integer but couldn't able to convert. Values in scientific notation: 1.1662986666666665E-4 2.0946799999999998E-4 3.0741333333333333E-6 5.599999999999999E-7... (2 Replies)
Discussion started by: scriptscript
2 Replies

4. Shell Programming and Scripting

Converting from scientific notation to normal

Hi everyone, I need to convert some numbers that are written in scientific notation to normal notation. Here is a sample line from my data file; "1",1,-1,0,0,502,0,0.00000000000E+00,0.00000000000E+00,0.35591163544E+03,0.35591163548E+03,0.50400001928E-02,0.,-1. first of all, my data file... (4 Replies)
Discussion started by: hayreter
4 Replies

5. Programming

Reading Scientific notation from file and storing in array

Hi, I am trying to read a set of numbers that are in scientific notation into a file so I can do some math on them, but when I display the array contents the numbers aren't the same as the numbers in the file. Could someone explain why? Thanks. int main() { double fArray; ... (3 Replies)
Discussion started by: Filter500
3 Replies

6. Shell Programming and Scripting

Convert decimal notation to ANSI point code notation

wondering if anyone has any thoughts to convert the below thru a shell script Convert decimal signalling point notation to ANSI point code notation There is a site that does that conversion but i need to implement the solution in a shell script.....Thoughts.... OS: Solaris 9 ... (4 Replies)
Discussion started by: aavam
4 Replies

7. Shell Programming and Scripting

Rounding scientific notation

Hi Friends, I have following 50,000 records in .txt file. I need to round field 3, 4, & 5 to 3 decimal places. 11|A123|-2.64216408856E01|3.64216408856E01|4.64216408856E-01 11|A123|0|-5.64216408856E01|0 11|A123|0|0|0 11|A123|-99999999|-99999999|-99999999... (4 Replies)
Discussion started by: ppat7046
4 Replies

8. UNIX for Dummies Questions & Answers

Conversion of scientific notation

Hello All, Hope all is well, Suppose I have a program that extracted data into a file called: progcros.in. I attached the file but I renamed it progcros.txt. I think that my mess up the column alignment. Anyways, in several columns there are numbers listed, however the numbers... (4 Replies)
Discussion started by: gingburg
4 Replies

9. UNIX for Dummies Questions & Answers

How to add/multiply numbers with scientific notation (2.343e-5)

Hi, I'm need to do some addition and multiplication of scientific nottaion numbers, in the form 34.23423e-10 for example. I was echoing the list of numbers to stdout, then using bc -l, then I find that this does not seem to work for numbers with exponential notation. Could someone help me out... (1 Reply)
Discussion started by: chugger06
1 Replies

10. Shell Programming and Scripting

How to Convert scientific notation to normal ?

Hell friends, I wrote a script gets the summation of particular column using awk. The awk output is given in scientific notation. How do I convert the scientific notation to normal. My awk syntax : awk '{sum += $2} END { printf sum }' temprep.txt Out put is like 1.5365e+07 I want it as... (2 Replies)
Discussion started by: maheshsri
2 Replies
Login or Register to Ask a Question