Friday 22 December 2017

Shell command to sum integers, one per line?

itemprop="text">

I am looking for a command that will
accept (as input) multiple lines of text, each line containing a single integer, and
output the sum of these integers.



As a bit of
background, I have a log file which includes timing measurements. Through grepping for
the relevant lines and a bit of sed reformatting I can list all
of the timings in that file. I would like to work out the total. I can pipe this
intermediate output to any command in order to do the final sum. I have always used
expr in the past, but unless it runs in RPN mode I do not think
it is going to cope with this (and even then it would be
tricky).



How can I get the summation of
integers?



Answer




Bit of awk should do it?




awk '{s+=$1} END
{print s}'
mydatafile


Note: some
versions of awk have some odd behaviours if you are going to be adding anything
exceeding 2^31 (2147483647). See comments for more background. One suggestion is to use
printf rather than
print:



awk
'{s+=$1} END {printf "%.0f", s}'
mydatafile

No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...