Arithmetic: how to??


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Arithmetic: how to??
# 8  
Old 12-01-2009
For the sum try this one:
Code:
perl -F'\t' -lane'
	$rows[$.][$_] += $F[$_] for 0 .. $#F;
	close ARGV if eof;
	END { print join "\t", @{ $rows[$_] } for 1 .. $#rows }
  ' <your_files>

# 9  
Old 12-01-2009
Thanks radoulov,

Mind explaining what I'm doing here i.e. what the code/syntax means?
# 10  
Old 12-02-2009
Quote:
Originally Posted by Muhammad Rahiz
Thanks radoulov,

Mind explaining what I'm doing here i.e. what the code/syntax means?
Yes.
First the command line options (see perldoc perlrun for more detailed information).

-a - split the records using the tab character (just like AWK does).
-F'\t' - use the tab character as a field separator (just like the AWK's -F option)
-l - enables automatic line-ending processing.
-n - loop over the records automatically (somehow like AWK or rather like sed -n)
-e - Perl
code follows.

The code.

Code:
$rows[$.][$_] += $F[$_] for 0 .. $#F;

Build a multidimensional array (@rows) looping over the fields summing their values.
The first dimension is the line number $. , the second one is the field number. After processing a record like this one:

Code:
1       2       3

the array will look like this:

Code:
% printf '%s\t%s\t%s\n' {1..3} |
  perl -MData::Dumper -F'\t' -lane'
    $rows[$.][$_] += $F[$_] for 0 .. $#F;
    END {print Dumper \@rows}
    '  
$VAR1 = [
          undef,
          [
            1,
            2,
            3
          ]
        ];

Code:
close ARGV if eof;

Reset $. at the end of every input file to make it work like AWK's FNR, otherwise it works like AWK's NR.

Code:
END { print join "\t", @{ $rows[$_] } for 1 .. $#rows }

At the end output the result.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Arithmetic with bash

I need to divide the number of white spaces by total number of characters in a file using bash. I am able to get the number of white spaces correctly using: tr -cd < afile | wc -c I am also able to get the total number of characters using: wc -c afile How do I divide the first... (2 Replies)
Discussion started by: ngabrani
2 Replies

2. Programming

Pointer Arithmetic In C

I have a fundamental question on C pointer arithmetry.. Suppose i have a c string pointer already pointing to a valid location, Can I just do a charptr = charptr +1; to get to the next location, irregardless if my program is 32 or 64 bits? or should i do it this way: charptr =... (1 Reply)
Discussion started by: Leion
1 Replies

3. Shell Programming and Scripting

csh arithmetic ?

Hello, Could someone explain how this one is possible: # @ x = 10 - 11 + 3 # echo $x -4 I know that writing script using csh is bad idea, but I need to write few lines. thanks Vilius (2 Replies)
Discussion started by: vilius
2 Replies

4. UNIX for Dummies Questions & Answers

String Arithmetic ?

Hello Experts, In my shell I need to perform some simple subtraction on a value returned as a result of the "wc" command. The code: scanFromLine="100" ## This is returned as string as a result of some operation totalLines=`wc -l "${latestLogFile}" | awk '{print $1}'` ## eg: 200 ... (2 Replies)
Discussion started by: hkansal
2 Replies

5. Shell Programming and Scripting

Arithmetic on timestamps

Hi Friends, please advise on shell script to add two time stamps for example : a=12:32 b=12:00 c=a+b=00:32 please help me to find shell script to add to two time stamps, as i need to convert time from EST to GMT or SST to prepare status of jobs in unix and to specify estimated time to... (3 Replies)
Discussion started by: balireddy_77
3 Replies

6. UNIX for Dummies Questions & Answers

Arithmetic Operators

Hello, I have a list of 'inputs' and i want to convert those on the second list named 'Desired Outputs', but i don't know how to do it? Inputs Desired Outputs 1 2 94 4 276 8 369 10 464 12 ... (0 Replies)
Discussion started by: filda
0 Replies

7. Shell Programming and Scripting

arithmetic in tcsh

Yes I know tcsh sucks for scripting and arithmetic but I have to write a script for multiple users and they all use tcsh. I have this variable that I 'set' with but pulling numbers off of stings with set STUFF = `grep string file | awk command` Now I would like to add up the numbers that... (4 Replies)
Discussion started by: gobi
4 Replies

8. Shell Programming and Scripting

Help with arithmetic operation

I am using egrep to extract numbers from a file and storing them as variables in a script. But I am not able to do any arithmetic operations on the variables using "expr" because it stores them as char and not integers. Here is my code and the error I get. Any help will be appreciated. #!/bin/sh... (3 Replies)
Discussion started by: emjayshaikh
3 Replies

9. Shell Programming and Scripting

Can I use wc -l with arithmetic expression?

Folks, I am wondering that i can use something like this in one line. For example, $((cat filename > wc -l) / 2) It doesn't work; how to get it work using command substitution? Moreover, is there any option for wc -l not to return filename after the line counts? wc -l filename would... (3 Replies)
Discussion started by: lalelle
3 Replies

10. UNIX for Advanced & Expert Users

time arithmetic

Can anyone help please. I am writing a kourne shell script and I am unsure how to do the following: I have extracted a time string from a logfile, and I have another time string I want to compare it to to see if it's later than the time I'm comparing with. i.e. expectedSLA="23:00:00", ... (2 Replies)
Discussion started by: csong2
2 Replies
Login or Register to Ask a Question