0

I have something like this

file1:

element1,12
element2,10
element3,5

file2:

IN
element1,8
element3,5

and I want to modify file1 and obtain:

element1,20
element2,10
element3,10

The first line from file2 contains "IN" that, means I want to make an addition. If it would have been "OUT" instead, the values should be subtracted and file1 should have looked like this:

element1,4
element2,10
element3,0

I have to work with awk, grep, sed. Thx a lot!

0

1 Answer 1

2
$ cat tst.awk
BEGIN { FS=OFS="," }
NR==FNR {
    if ( FNR == 1 ) {
        mult = ($1=="IN" ? 1 : -1)
    }
    else {
        add[$1] = mult * $2
    }
    next
}
{
    $2 += add[$1]
    print
}

$ awk -f tst.awk file2 file1
element1,20
element2,10
element3,10

$ awk -f tst.awk file3 file1
element1,4
element2,10
element3,0

$ head file{1..3}
==> file1 <==
element1,12
element2,10
element3,5

==> file2 <==
IN
element1,8
element3,5

==> file3 <==
OUT
element1,8
element3,5

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .