Joining Three Files


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Joining Three Files
# 1  
Old 08-11-2011
Joining Three Files

Hi guys,

I have three files which needs to be joined to a single file.

File 1:
Col a, Col b, Col c

File 2:
Col 1a, Col 1b

File 3:
Col 2a, Col 2b

Output:
Col 1a, Col 2a, Col a, Col b, Col c.

All the files are comma delimited. I need to join Col b with Col 1b and need to bring Col 1a to the output. If there is no matching record, then " " has to come to the output.(Left join).
similarly col c needs to be joined with Col 2b and Col 2a needs to be output.

Can somebody help me out with this.

Cheers!!!!
# 2  
Old 08-11-2011
Give more lines in your input files and the output (with and without matches).
# 3  
Old 08-11-2011
Quote:
First file

Name TransactionID StoreID CustomerID RegTransr TransactionCode
StoreCENTER 620499 1238 12380005080811100000 1619 1501
StoreCENTER 620500 1238 12380005080811100000 1620 1501
StoreCENTER 634956 557 3243 1
StoreCENTER 620501 1238 8871 2
StoreCENTER 634957 557 3244 1
StoreCENTER 1030086 625 8979 1
StoreCENTER 620507 1238 4200 1
StoreCENTER 1030087 625 8980 1
StoreCENTER 620508 1238 8874 2
StoreCENTER 620511 1238 4201 1
StoreCENTER 620512 1238 12380005080811100000 1625 1501

Second File
TransactionID StoreID SequenceID
620499 1238 1
620500 1238 1
620512 1238 1
620528 1238 1
620535 1238 1
620543 1238 1
620545 1238 1

Output File
Name TransactionID StoreID CustomerID RegTransr TransactionCode SequenceID
StoreCENTER 620499 1238 12380005080811100000 1619 1501 1
StoreCENTER 620500 1238 12380005080811100000 1620 1501 1
StoreCENTER 634956 557 3243 1
StoreCENTER 620501 1238 8871 2
StoreCENTER 634957 557 3244 1
StoreCENTER 1030086 625 8979 1
StoreCENTER 620507 1238 4200 1
StoreCENTER 1030087 625 8980 1
StoreCENTER 620508 1238 8874 2
StoreCENTER 620511 1238 4201 1
StoreCENTER 620512 1238 12380005080811100000 1625 1501 1
Files are joined by TransactionCode(Second Column after StoreCENTER) and StoreID (next Column) . The Last column from the output is coming from Second file
# 4  
Old 08-11-2011
Code:
 
awk 'NR==FNR {a[$1]=$3;next} $2 in a { print $0" "a[$2];next}1' file2 file1

# 5  
Old 08-11-2011
Thanks Panyam for your help..
But i am getting this errror
Code:
$ awk 'NR==FNR {a[$1]=$3;next} $2 in a { print $0" "a[$2];next}1' mac_trans.txt mac_discount.txt
awk: syntax error near line 1
awk: bailing out near line 1

Even though the data is same, the file is a CSV.

Code:
$ cat mac_trans.txt
StoreCENTER,625_1030061_830 AM,3485e17a-0baa-46a9-9edf-07a0858c4188,1030061,8956,1,625,MBROWNE,3,000000011603
StoreCENTER,625_1030062_833 AM,992b6947-a404-4e10-8e35-44dd85ccd5ee,1030062,8957,1,625,MBROWNE,3,000000011603
StoreCENTER,625_1030063_838 AM,aa742016-0b68-4155-bc60-ca44f3dd504b,1030063,8958,1,625,MBROWNE,3,000000011603
StoreCENTER,625_1030064_839 AM,898189a4-7e5e-4341-9492-d6b72549c9bc,1030064,8959,1,625,MBROWNE,3,000000011603
StoreCENTER,625_1030065_841 AM,01fc6fa4-6f40-47ce-ab76-fad4ddd88d6b,1030065,8960,1,625,MBROWNE,3,000000011603
StoreCENTER,625_1030066_843 AM,6ddef2a7-8e11-4076-91fa-8cf3a1d8e3e0,1030066,8961,1,625,MBROWNE,3,000000011603
StoreCENTER,625_1030067_844 AM,7d7ae219-70b7-4b8e-a282-a5a3a4cb2074,1030067,8962,1,625,MBROWNE,3,000000011603
StoreCENTER,557_634951_829 AM,41600465-2939-4967-a2e8-f8b32f7284a1,634952,3239,1,557,BGUZZI,1,000000011837
StoreCENTER,557_634953_832 AM,679b8707-993d-4fb0-b8e8-779b1fdebcaa,634953,3240,1,557,BGUZZI,1,000000011837

Code:
$ cat mac_discount.txt
1030064,1238,1,12380005080811105527,Customer
620500,1238,1,12380005080811102840,Customer
620528,1238,1,12380005080811142338,Customer
620535,1238,1,12380005080811142752,Customer
620543,1238,1,12380005080811144409,Customer
620545,1238,1,12380005080811144809,Customer
634952,1238,1,12380005080811102548,Customer


Last edited by pludi; 08-11-2011 at 10:32 AM..
# 6  
Old 08-11-2011
Code:
 
 
Use nawk or /usr/xpg4/bin/awk on Solaris.
In case of a csv , awk -F"," should do the work for you

# 7  
Old 08-12-2011
Hi Panyam,

I was able to use awk. I wrote small awk program to check it.

Code:
[pkdprd1@test-dwbi-app2:/import/volsap/dev]
$ awk -F"," '{print $1}' mac_discount.txt
1030064
620500
620528
620535
620543
620545
634952

But somehow when i using your awk program its giving me an errror. Can you please help me
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Please help me in joining two files

I have two files with the below contents : sampleoutput3.txt 20150202;hostname1 20150223;hostname2 20150716;hostname3 sampleoutput1.txt hostname;packages_out_of_date;errata_out_of_date; hostname1;11;0; hostnamea;12;0; hostnameb;11;0; hostnamec;95;38; hostnamed;440;358;... (2 Replies)
Discussion started by: rahul2662
2 Replies

2. Shell Programming and Scripting

Joining 2 Files

File "A" (column names: Nickname Number GB) Nickname Number GB PROD_DB0034 100A 16 ASMIL1B_DATA_003 100B 16 PSPROD_0000 1014 36 PSPROD_0001 100D 223 ..... File "B" (column names: TYPE DEVICE NUMBER SIZE) TYPE DEVICE NUMBER SIZE 1750500 hdisk2 100A 16384 1750500 hdisk3 ... (4 Replies)
Discussion started by: Daniel Gate
4 Replies

3. Shell Programming and Scripting

Help with joining files and adding headers to files

Hi, I have about 20 tab delimited text files that have non sequential numbering such as: UCD2.summary.txt UCD45.summary.txt UCD56.summery.txt The first column of each file has the same number of lines and content. The next 2 column have data points: i.e UCD2.summary.txt: a 8.9 ... (8 Replies)
Discussion started by: rrdavis
8 Replies

4. Shell Programming and Scripting

Joining two files into one

Hi experts, I'm quite newbie here!! I have two seperate files. Contents of file like below File 1: 6213019212001 8063737 File:2 15703784 I want to join these two files into one where content will be File 3: 6213019212001 8063737 15703784 Regards, Ray Seilden (1 Reply)
Discussion started by: RayanS
1 Replies

5. UNIX for Dummies Questions & Answers

Joining two files

I have two comma separated files. I want to join those filesa nd put the result in separate file. smaple data are: file1: A1,1,100 A2,1,200 B1,2,100 B2,2,200 file2 1,50 1,25 1,25 1,100 1,100 2,50 2,50 (10 Replies)
Discussion started by: pandeesh
10 Replies

6. Shell Programming and Scripting

joining two or more files

i have three files file a has contents 123 234 238 file b has contents 189 567 567 and file c has contents qwe ert ery (1 Reply)
Discussion started by: tomjones
1 Replies

7. Shell Programming and Scripting

Joining files

Hi, Whats the unix function to join multiple files? is it cat? so I have multiple files in the same format and I want to join then by row eg. FILE1 1 3 1 3 1 3 1 3 FILE2 2 4 2 4 2 4 (1 Reply)
Discussion started by: kylle345
1 Replies

8. Shell Programming and Scripting

Help with joining two files

Greetings, all. I've got a project that requires I join two data files together, then do some processing and output. Everything must be done in a shell script, using standard unix tools. The files look like the following: File_1 Layout: Acct#,Subacct#,Descrip Sample: ... (3 Replies)
Discussion started by: rjlohman
3 Replies

9. UNIX for Dummies Questions & Answers

joining files

Hi, Could anyone help me ? I'm trying to join two files, but no common field are on them. So I think on generate \000\ sequence to add for each line on both files, so then will be able to join these files. Any idea? Thanks in advance, (2 Replies)
Discussion started by: Manu
2 Replies

10. UNIX for Dummies Questions & Answers

joining 2 files

Hi, I have two files that I need to find difference between. Do I use diff or join? If join, how do I use it? thanks, webtekie (1 Reply)
Discussion started by: webtekie
1 Replies
Login or Register to Ask a Question