McF44
McF44

Reputation: 33

Match values of columns of two files and join all matching lines in a new file

I've got two files and first look like this:

dif-1-2-3-4.com.log 1 1 1
dif-1-2-3-5.com.log 1 1 2
dif-1-2-3-5.com.log 2 1 1
dif-1-2-3-6.com.log 1 1 3
dif-1-2-3-6.com.log 3 1 1
dif-1-2-4-5.com.log 1 2 1
dif-1-2-4-6.com.log 1 2 2
dif-1-2-4-6.com.log 2 2 1
dif-1-2-5-6.com.log 1 3 1
dif-1-3-4-6.com.log 2 1 2

Second file look like this:

dif-1-2-3-4.com 1 1 1
dif-2-3-4-5.com 1 1 1
dif-3-4-5-6.com 1 1 1
dif-1-2-3-5.com 1 1 2
dif-2-3-4-6.com 1 1 2
dif-1-2-3-6.com 1 1 3
dif-1-2-4-5.com 1 2 1
dif-2-3-5-6.com 1 2 1
dif-1-2-4-6.com 1 2 2
dif-1-2-5-6.com 1 3 1
dif-1-3-4-5.com 2 1 1
dif-2-4-5-6.com 2 1 1
dif-1-3-4-6.com 2 1 2
dif-1-3-5-6.com 2 2 1
dif-1-4-5-6.com 3 1 1

I want this:

dif-1-2-3-4.com 1 1 1 dif-1-2-3-4.com.log
dif-2-3-4-5.com 1 1 1 dif-1-2-3-4.com.log
dif-3-4-5-6.com 1 1 1 dif-1-2-3-4.com.log
dif-1-2-3-5.com 1 1 2 dif-1-2-3-5.com.log
dif-2-3-4-6.com 1 1 2 dif-1-2-3-5.com.log
dif-1-2-3-6.com 1 1 3 dif-1-2-3-6.com.log
dif-1-2-4-5.com 1 2 1 dif-1-2-4-5.com.log
dif-2-3-5-6.com 1 2 1 dif-1-2-4-5.com.log
dif-1-2-4-6.com 1 2 2 dif-1-2-4-6.com.log
dif-1-2-5-6.com 1 3 1 dif-1-2-5-6.com.log
dif-1-3-4-5.com 2 1 1 dif-1-2-3-5.com.log
dif-2-4-5-6.com 2 1 1 dif-1-2-3-5.com.log
dif-1-3-4-6.com 2 1 2 dif-1-3-4-6.com.log
dif-1-3-5-6.com 2 2 1 dif-1-2-4-6.com.log
dif-1-4-5-6.com 3 1 1 dif-1-2-3-6.com.log

If values in second third and fourth column in second file matching with values in first file then I want print line from first file behind matching line in second file. Thank you for your answer.

Upvotes: 1

Views: 240

Answers (1)

anubhava
anubhava

Reputation: 784958

You can make a composite key using $2,$3,$4 and do it like this:

awk 'NR==FNR{a[$2,$3,$4]=$1; next} {print $0, a[$2,$3,$4]}' file1 file2

dif-1-2-3-4.com 1 1 1 dif-1-2-3-4.com.log
dif-2-3-4-5.com 1 1 1 dif-1-2-3-4.com.log
dif-3-4-5-6.com 1 1 1 dif-1-2-3-4.com.log
dif-1-2-3-5.com 1 1 2 dif-1-2-3-5.com.log
dif-2-3-4-6.com 1 1 2 dif-1-2-3-5.com.log
dif-1-2-3-6.com 1 1 3 dif-1-2-3-6.com.log
dif-1-2-4-5.com 1 2 1 dif-1-2-4-5.com.log
dif-2-3-5-6.com 1 2 1 dif-1-2-4-5.com.log
dif-1-2-4-6.com 1 2 2 dif-1-2-4-6.com.log
dif-1-2-5-6.com 1 3 1 dif-1-2-5-6.com.log
dif-1-3-4-5.com 2 1 1 dif-1-2-3-5.com.log
dif-2-4-5-6.com 2 1 1 dif-1-2-3-5.com.log
dif-1-3-4-6.com 2 1 2 dif-1-3-4-6.com.log
dif-1-3-5-6.com 2 2 1 dif-1-2-4-6.com.log
dif-1-4-5-6.com 3 1 1 dif-1-2-3-6.com.log

Upvotes: 2

Related Questions