You can get rid of all that pipeline, a better approach would be:
Your solution is more efficient, but in the special case of very large numbers, bc's arbitrary precision would be better.
AWK stores all numbers (integers included) as doubles, so, assuming IEEE 754 64-bit floating point representation, very large is somewhere around 2^53 (on the order of 9 x 10^15, short scale quadrillion). Beyond that most integers cannot be represented without loss of precision.
I realize that it's unlikely that numbers of this magnitude will arise, given that the OP's solution only handles 5 values and none are very large. I simply mention the possibility for completeness' sake.
A simpler pipeline which doesn't hardcode operands:
Regards,
Alister
Last edited by alister; 07-04-2013 at 09:54 PM..
These 2 Users Gave Thanks to alister For This Post:
Alister like the approach with bc, and appreciate for the explanation for cases with large values & using bc's arbitrary precision , awesome little pipeline..,
Yoda 's awk code also nicely worked,
Thank you, all.
---------- Post updated at 01:34 AM ---------- Previous update was at 12:22 AM ----------
Here got it without much pipeline(s) and using awk + bc's arbitrary presscion :
Thanks again,
---------- Post updated at 02:18 AM ---------- Previous update was at 01:34 AM ----------
I did not find any problem with the solution given by Yoda for large files/entries also, and I have taken as a solution. Excellent code!.
I did not find any problem with the solution given by Yoda for large files/entries
Typical sysadmin work is unlikely to exceed the precise-integral range of 64-bit double precision floating point, but it's good to know its limits.
Loss of precision:
The same issue occurs at the other limit, if you subtract 1 from -2^53.
Beyond 2^53 but before overflow occurs, there's a very large range of mostly imprecisely represented integers:
The implementation used in the preceding examples:
Regards,
Alister
Alister , you are right.
I never tried to validate the arithmetic output of awk happening from the script, and assuming it was right for the large numbers calculation as well.
Now I can see the difference , you have shown it precisely. Thank you.
These results are showing issue with awk arithmatic work :
#Correct result with bc:
Adding 2 , looks result came ok, but not with 1. Also with the other examples as you have shown we see the issue when overflow happens with large values.
So here I am convinced that for large arithmetic work awk is not a very suitable tool but bc the arbitrary precision calculator to be use.
So as per the accurate arithmetic operation bc wins.
To be clear, it's not an issue with AWK arithmetic. It is the result of the floating point representation implemented by most hardware.
If this were commonly a problem, you would have already encountered it. For most things, it's not an issue. But, when it is, the price of arbitrary precision arithmetic is performance: it is much slower.
By the way, you don't have to go big to encounter issues; 1/10 is a simple 0.1 in decimal but in binary it is a neverending sequence.
Hello,
This is a bit complicated for me.
My scenario in MyFile:
Search string1,
When string1 is found, grep the line containing string1, go back over that line in upward direction and grep the first line containing string2.
Here is an example:
MyFile
His email address... (17 Replies)
I need assistance with following requirement, I am new to Unix.
I want to do the following task but stuck with file creation date(sysdate)
Following is the requirement
I need to create a script that will read the abc/xyz/klm folder and look for *.err files for that day’s date and then send an... (4 Replies)
Hi Friends,
Please help me to sort out this problem, I am running this in centos o/s and whenever I run this script I am getting "find: missing argument to `-exec' " but when I run the same code in the command line I didn't find any problem. I am using perl script to run this ... (2 Replies)
Hi all ,
I'm new to unix
I have a checked project , there exists a file called xxx.config .
now my task is to find all the files in the checked out project which references to this xxx.config file.
how do i use grep or find command . (2 Replies)
Hello everyone,
first post here, trying to learn scripting on my own and this forum as been really helpful so far. I made few little scripts working great but I m facing some problems with RE.
I have a bunch of files in many subdirectories called *001.ext *002.ext OR simple *.ext or *01.ext... (7 Replies)
I need to find whether there is a file named vijay is there or not in folder named "opt" .I tried "ls *|grep vijay" but it showed permission problem.
so i need to use find command (6 Replies)
Yes , I have to find a file in unix without using any find or where commands.Any pointers for the same would be very helpful as i am beginner in shell scritping and need a solution for the same.
Thanks in advance.
Regards
Jatin Jain (10 Replies)
Hello,
I create a file touch 1201093003 fichcomp
and inside a repertory (which hava a lot of files) I want to list all files created before this file :
find *.* \! -maxdepth 1 - newer fichcomp but this command returned bash: /usr/bin/find: Argument list too long
but i make a filter all... (1 Reply)