My code:
works but can I do it without creating temporary files?
Can I use bc to do calculations on a specific field?
Or can I do calculations within sed?
If you want (slash need) to stick to sed and bc, try this:
Explanation: Don't abuse a cat! First turn the line into a string by enclosing it in '"'. Add a comma, the expression, a comma and a newline. Feed this to the print function of bc.
Finally translate the last '.' into a ',', because bc is not aware of locale-issues. In the Netherlands we use a decimal ',' instead of a '.'.
When nesting groups in sed, the deeper nested groups get higher numbers. e.g.: (a(b(c))) \1=abc, \2=bc, \3=c. This way we can get rid of the '.'. Of course this applies not only to sed but to other regular expression environments as well.
I've tested this on Ubuntu 11.10.
Quote:
bash --version
GNU bash, versie 4.2.10(1)-release (x86_64-pc-linux-gnu)
sed --version
GNU sed versie 4.2.1
bc --version
bc 1.06.95
Personally I think the above solution is very unreadable. A fairly simple way to achieve your goal with awk could be:
If this doesn't work in your situation try nawk instead of awk.
Hello,
Thank you!
Yes, for now, I'd like to stick with sed.
So when you have a line with a string in it to calculate (example: test,5.5+5.5)
than you have to enclose the string into "" followed by a comma, the expression you want to calculate, another comma and a newline? (print "test",5.5+5.5,"\n")
I'm from Belgium, so we also use a decimal ',' instead of a '.'.
Greets!
PS: Happy New year!
---------- Post updated at 04:58 PM ---------- Previous update was at 12:00 PM ----------
And what if you have more than one string?
Example:
to
To be honest, I've hardly ever worked with bc before. I just took a glimpse at the man page and came up with this idea. Since we are mixing strings and expressions, the print command seemed the way to go. It prints strings while other things in the argument list are interpreted as expressions before they get printed.
Your latest exercise could be solved as follows:
The result is:
Groetjes/greetings,
Eric
Hello. I'm writing an awk script that looks at a .csv file and calculates the weighted grade for each student based on the scores and categories in the file. I am able to get the script to run the only issue however is that the same score for each student is the same. I'm self-teaching myself the... (1 Reply)
Attached are the is original output (zipped file) and a custom file using the awk code below in which the average reads per bait are calculated (average.txt)
awk '{if(len==0){last=$4;total=$6;len=1;getline}if($4!=last){printf("%s\t%f\n", last,... (7 Replies)
I'm writing a script that will read all the fields of a text file into an array(if they are numeric), while at the same time computing the minimum and maximum values from the file. After that I want to output the average of all the numbers in the array.
The first problem I'm having is that many... (10 Replies)
grep Quality abc.txt | awk -F"=" '{print $2}'
o/p is given as
70/70
49/70
I want in the below format (percentage format)
100%
70%
help me!!!!:confused::confused::confused:
---------- Post updated at 09:59 AM ---------- Previous update was at 09:57 AM ----------
Cell 01 -... (3 Replies)
Dear All,
I have a long list like this:
337
375
364
389
443
578
1001
20100
.
.
.
.
etc
I would like to substract each value from the first entry which in this case is 337 and report it in a separate column. So the expected output looks like
337 0 (10 Replies)
HI
i have following problem,
i need to use split command to split files each should be cca 700 lines but i dont know how to inplement it in the scripts becasuse each time the origin file will be various size ,
any body got any idea
cheers (2 Replies)
I need to be able to use the current date and calculate 7 days ago to be stored in another variable to be passed to a file in my Unix shell script. I need the date in the following format:
date '+%m/%d/%Y'
or
05/16/2006
How do I calculate date minus 7 days or 1 week ago? (8 Replies)
hi all,
was wondering if there is another way to do calculations in ksh scripts other than using bc ?? i am using a script to calculate average response time and my script errors out after running for a bit.
e.g code i am using :
averageTime=$(print "$totalTime / $numberOfEntries" |... (2 Replies)
I'm trying to have a loop print out statistics every X number of seconds. How can I add a specific number of seconds to a time variable and make a comparison? Thanks ahead of time.
For example:
startTime = `date +%H%M%S`
currentTime = $startTime
executeTime = startTime + X # X is equal... (5 Replies)