Matching and combining two files


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Matching and combining two files
# 1  
Old 05-20-2008
Matching and combining two files

Hi, How can I match the first two fields of file2 against the first two fields of file1 and where they match combine the two lines. If the name
(example-Aidan Rielly) is in file1 but not in file2 then just write the info from file1 to the combined output file. If the name
(example-Silvia Spoelstra) is in file2, but not in file1, then do not write it to the combined output file.

file1
Firstname,Surename,City
Aidan,Rielly,Derry
John,Doe,London
Jack,Daniles,Glasgow
Ivor,Engine,Cardif

file2
Firstname,Surname,Country,ISO
Jack,Daniels,Scotland,GB
John,Doe,England,UK
Ivor,Engine,Wales,UK
Silvia,Spoelstra,Germany,DE

Combined file
Firstname,Surename,City,Country,ISO
Aidan,Rielly,Derry
John,Doe,London,England,UK
Jack,Daniles,Glasgow,Scotland,GB
Ivor,Engine,Cardif,Wales,UK

thanks in advance
Pete

Last edited by p3t3r; 05-20-2008 at 08:04 AM..
# 2  
Old 05-20-2008
This should gives the desired output:

Code:
awk -F, '
BEGIN{print "Firstname,Surename,City,Country,ISO"}
NR==FNR{a[$1$2]=$3","$4;next}
a[$1$2]{print $0 ","a[$1$2];next}1
' file2 file1

Regards
# 3  
Old 05-20-2008
Hi, thanks for the quick response. I get a syntax error when I try this.

$ awk -F, '
> BEGIN{print "Firstname,Surename,City,Country,ISO"}
> NR==FNR{a[$1$2]=$3","$4;next}
> a[$1$2]{print $0 ","a[$1$2];next}1
> ' file2 file1
awk: syntax error near line 4
awk: bailing out near line 4

any idea ?
Pete
# 4  
Old 05-20-2008
A common problem is that there are different versions of awk. You probably have the original "One True" awk; see if you can find nawk or mawk or gawk on your system. Also on Sun and HP-UX look for the XPG4 version.
# 5  
Old 05-20-2008
As era mentioned, if you get errrors use nawk or /usr/xpg4/bin/awk on Solaris.

Regards
# 6  
Old 05-20-2008
works perfectly with nawk. Smilie

Thankyou very much
Pete
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Combining files

Hi I have about 108 files (text files) that end with .avg and each one of these files have a distinct name that describes what is in the file. In each file there is a set of 80 values that are tab separated. I want to combine all 108 files into ONE main file. So each file is named: 1.avg... (5 Replies)
Discussion started by: phil_heath
5 Replies

2. UNIX for Dummies Questions & Answers

Need Help in reading N days files from a Directory & combining the files

Hi All, Request your expertise in tackling one requirement in my project,(i dont have much expertise in Shell Scripting). The requirement is as below, 1) We store the last run date of a process in a file. When the batch run the next time, it should read this file, get the last run date from... (1 Reply)
Discussion started by: dsfreddie
1 Replies

3. Shell Programming and Scripting

AWK Matching Fields and Combining Files

Hello! I am writing a program to run through two large lists of data (~300,000 rows), find where rows in one file match another, and combine them based on matching fields. Due to the large file sizes, I'm guessing AWK will be the most efficient way to do this. Overall, the input and output I'm... (5 Replies)
Discussion started by: Michelangelo
5 Replies

4. UNIX for Dummies Questions & Answers

combining two files

Hi Gurus, I have 2 files: File1 Filename1 xx Filename1 yy Filename1 Total Filename2 xx Filename2 yy Filename2 zz Filename2 Total Filename3 xx Filename3 Total and File2: Filename1 10296 xxx Date: 09/01/08 Filename2 10296 xxx Date: 09/05/08... (36 Replies)
Discussion started by: rock1
36 Replies

5. Shell Programming and Scripting

Matching and combining two files

Hi there, I have two files. What I want to do is search for the values in second field of file1 in the 6th field of the file2 and of they match to add the fields 1-5 of the file2 at the end of the line of file1 with a comma before. E.g File1 FWB,CHUAGT87HUMAS/BUD01,REUAIR08KLM... (3 Replies)
Discussion started by: sickboy
3 Replies

6. Shell Programming and Scripting

Combining two files

I have two files and I need to combine (not append - but combine a row to a row) eg: File1: apples grapes oranges lemons File2: red green orange yellow After combining, the file should look like: (the second column should start at a specific byte) apples red grapes green... (7 Replies)
Discussion started by: hemangjani
7 Replies

7. Shell Programming and Scripting

Combining Two Files

Could someone help me reduce the number of runs for a shell program I created? I have two text files below: $ more list1.txt 01 AAA 02 BBB 03 CCC 04 DDD $ more list2.txt 01 EEE 02 FFF 03 GGG I want to combine the lines with the same number to get the below: 01 AAA 01 EEE 02... (4 Replies)
Discussion started by: stevefox
4 Replies

8. Shell Programming and Scripting

Combining Two Files

I have two files which contain data from two different transactions in the same format: <Name> - <Count> My goal is to end up with data in this format after combining the two: <Name> - <Count1> - <Count2> Is this possible to do with awk, or is there something better? Thanks... (3 Replies)
Discussion started by: bat711
3 Replies

9. UNIX for Dummies Questions & Answers

Combining files

Hi, is there a way to combine 2 files together, joining line 1 from file A with line 1 from file B, line 2 from A with line 2 from B etc. File A File B 1 4 2 5 3 6 Combined result = File C 14 25 36 (2 Replies)
Discussion started by: Enda Martin
2 Replies

10. UNIX for Dummies Questions & Answers

combining files

how will i combine these 2 files below, with the desired output specified below: file1: one two three four file2: red blue yellow green file3: aaa bbb ccc ddd (3 Replies)
Discussion started by: apalex
3 Replies
Login or Register to Ask a Question