On Wed, 19 May 2004 12:06:18 -0500 "Michael French" <mfrench@xxxxxxxxxxxxxxxxx> wrote: > I have two text files each with a single column of numbers in them > > and I want to write a script that multiplies the number on each line > of file one with the corresponding number from file two and produces a > sum of the multiplied numbers in the 2 files.. How would I do this > with a loop? This is just a small shell script, I can use perl if I > need to, I just need to know the data structure. If it was just one > file, I would do something like this: Putting everything into arrays makes it easy to use the values of the data and results if you need to do something with them later. Thank you Russell #!/bin/sh ### Variables ### # First file containing column of numbers FILE1=/path/file1 # Number of column in first file that contains numbers to be used COLUMN1=1 # Second file containing column of numbers FILE2=/path/file2 # Number of column in second file that contains numbers to be used COLUMN2=1 ### Declare Arrays ### declare -a NUMBER_FILE1 declare -a NUMBER_FILE2 declare -a PRODUCT ### FUNCTIONS ### MULTIPLY () { # Pull a column out of two files and multiple # Populate arrays with data and result # if [ -r $FILE1 ] ; then NUMBER_FILE1=(`awk '{print $COLUMN1}' $FILE1`) if [ -r $FILE2 ] ; then NUMBER_FILE2=(`awk '{print $COLUMN2}' $FILE2`) if [ ${#NUMBER_FILE1[@]} = ${#NUMBER_FILE2[@]} ] ; then for (( x=0 ; x<${#NUMBER_FILE1[@]} ; x++ )) ; do let PRODUCT[$x]=${NUMBER_FILE1[$x]}*${NUMBER_FILE2[$x]} done else echo "Variance in data structure" exit 1 fi else echo "$FIL2 is not readable" fi else echo "$FILE1 is not readable" fi } # End MULTIPLY ### MAIN ### MULTIPLY echo ${PRODUCT[@]} for (( y=0 ; y<${#PRODUCT[@]} ; y++ )) ; do echo "${NUMBER_FILE1[$y]}*${NUMBER_FILE2[$y]}=${PRODUCT[$y]}" done exit 0 - : send the line "unsubscribe linux-admin" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html