If you want a "pure BASH" solution, I don't have one off hand. Stuff like
what you mentioned, I generally use a data base for. In this particular,
I'd use SQLite. A shell script using sqlite3 & awk would look something
like:

#!/bin/sh
rm files.db3
{
cat <<EOF
.mode column
.headers on
create table file1 (name text, weight int, height int);
create table file2 (name text, weight int, height int);
EOF
awk 'NR > 1 {print "INSERT INTO file1 VALUES(\"" $1 "\"," $2 "," $3 ");"} '
file1.txt
awk 'NR > 1 {print "INSERT INTO file2 VALUES(\"" $1 "\"," $2 "," $3 ");"} '
file2.txt
cat <<EOF2
.print Lines in file1 which have names not in file2
select * from file1 where name not in (select name from file2);
.print
.print Lines in file2 which have names not in file1
select * from file2 where name not in (select name from file1);
.print
.print Statistics on common names.
select f1.name, f1.weight as weight1, f1.height as height1, f2.weight as
weight2, f2.height as height, f1.weight - f2.weight as w_diff, f1.height -
f2.height as h_diff
    from file1 as f1
    join file2 as f2
    on f1.name=f2.name;
EOF2
} | sqlite3 files.db3

The files look like (columns separated by tabs, not spaces!)

[tsh009@it-johnmckown-linux Val]$ cat file1.txt
Name    weight1 height1
Alex    220     67
Tom     320     75
Craig   180     71
John    186     65

[tsh009@it-johnmckown-linux Val]$ cat file2.txt
Name    weight2 height2
Alex    226     69
Tom     320     75
Craig   170     70
Steve   420     80



It if were much more complicated, I'd use an R script. I'm way too lazy to
try this in plain BASH, using only BASH facilities. I might think about it
in ooRexx.

On Mon, Jan 18, 2016 at 10:15 PM, Val Krem <valk...@yahoo.com> wrote:

>
>
> Hi John and all (re posted),
>
> I am trying to write a bash script to do the following  small task
>
>
> I have two files and each file has two variables.
>
> File1
> Name      weight1    height1
> Alex      220           67
> Tom        320           75
> Craig     180           71
> John      186           65
>
>
> File2
> Name     weight2  height2
> Alex       226       69
> Tom        320       75
> Craig      170       70
> Steve      420       80
>
>
> Here are  my objectives,
>
> 1. Combine the two files (file1 and file2)
>   a) count and List the name(s) along with their weight and height that
> appear in         file1 not in file2
>
>                 Name  Weight  height
>              eg John     186        65
>
> b) count and list the names(S) along with their  weight and height that
> appear in         file 2 but not in file1
>
>             Name   Weight height
>             Steve   420      80
>
>     c)  for those that appear in both file 1 and file 2, I want some  stat
>     Name  weight1   height1  weight2  height2   w_diff  h_diff
>     Alex     220       67        226       69      6       2
>      Tom      320       75        320       75      0      0
>     Craig   180       71        170       70     -10    -1
>
> d) depending on the difference
>     I want to list their names   along with their weight and height
>
>       i)  increases in both variables
>          Name weight1 height1 weight2 height2 w_diff h_diff
>          Alex     220       67     226       69     6         2
>
>
>     ii) decreases in both variables
>        Name   weight1 height1 weight2 height2 w_diff h_diff
>       Craig    180      71      170      70     -10      -1
>
>     iii) decreases in either of the variables (weight or height)
>              not in this example.
>
>
>
> w_diff= weight1 - weight2
> h_diff= height1 - height2
>
> Thank you in advance
> val
>



-- 
Werner Heisenberg is driving down the autobahn. A police officer pulls
him over. The officer says, "Excuse me, sir, do you know how fast you
were going?"
"No," replies Dr. Heisenberg, "but I know where I am."

Computer Science is the only discipline in which we view adding a new wing
to a building as being maintenance -- Jim Horning

Schrodinger's backup: The condition of any backup is unknown until a
restore is attempted.

He's about as useful as a wax frying pan.

Maranatha! <><
John McKown

Reply via email to