Join 2 files


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Join 2 files
# 1  
Old 03-26-2013
Join 2 files

I have file1.txt

Code:
BGE179W1
BGE179W2
BGE179W3
BGE187W1
BGE187W2
BGE187W3
BGE194W1
BGE194W2
BGE194W3
BGE227W1
BGE227W2
BGE227W3
BGE288W1
BGE288W2
BGE288W3
BGE650W1

---------- Post updated at 12:41 AM ---------- Previous update was at 12:39 AM ----------

file 2 txt

Code:
BGE650W1,1,500,500,1
BGE227W3,1,500,500,0
BGE179W1,1,500,500,0
MDN987W2,1,500,500,1
MDN042W6,1,500,500,1
MDN161W6,1,500,500,0
MDN261W2,1,500,500,1
MDN250W3,1,500,500,1
LBP045W2,1,500,500,1
MDN146W3,1,500,500,1
MDN252W2,1,500,500,1
MDN223W5,1,500,500,0
MDN028W1,1,500,500,1
MDN267W2,1,500,500,1
MDN025W2,1,500,500,1
LBP122W1,1,500,500,1

---------- Post updated at 12:43 AM ---------- Previous update was at 12:41 AM ----------

expected result

Code:
BGE179W1,1,500,500,0
BGE179W2, , , , ,
BGE179W3, , , , ,
BGE187W1, , , , ,
BGE187W2, , , , ,
BGE187W3, , , , ,
BGE194W1, , , , ,
BGE194W2, , , , ,
BGE194W3, , , , ,
BGE227W1, , , , ,
BGE227W2, , , , ,
BGE227W3,1,500,500,0
BGE288W1, , , , ,
BGE288W2, , , , ,
BGE288W3, , , , ,
BGE650W1,1,500,500,1

---------- Post updated at 12:45 AM ---------- Previous update was at 12:43 AM ----------

i did this but still can't find desired result

Code:
awk -F, 'BEGIN{OFS=" "}FNR==NR{a[$1$2]=$3;next}($1$2 in a && $3=$3","a[$1$2])' file2.txt file1.txt > file3.txt

---------- Post updated at 12:47 AM ---------- Previous update was at 12:45 AM ----------

Last edited by Scrutinizer; 03-26-2013 at 02:48 AM.. Reason: code tags
# 2  
Old 03-26-2013
Try someting this:
Code:
awk 'NR==FNR{A[$1]=$0; n=NF; next} {if($1 in A) $0=A[$1]; else $n=$n }1' FS=, OFS=, file2 file1

# 3  
Old 03-26-2013
it keep showing syntax error running the code mr scrutinizer...any suggestion?
# 4  
Old 03-26-2013
What is the exact syntax error? If you are using Solaris try using /usr/xpg4/bin/awk instead of awk.
# 5  
Old 03-26-2013
Code:
awk: syntax error near line 1
awk: illegal statement near line 1
awk: illegal statement near line 1
awk: syntax error near line 1
awk: bailing out near line 1

---------- Post updated at 01:30 AM ---------- Previous update was at 01:25 AM ----------

oh my gosh, so awesome..tks mr scrutz

---------- Post updated at 02:11 AM ---------- Previous update was at 01:30 AM ----------

how about this one

file1.txt
Code:
BGE179W1,1,500,500,1
BGE179W2,1,500,500,1
BGE179W3,1,500,500,1
BGE187W1,1,500,500,1
BGE187W2,1,500,500,1
BGE187W3,1,500,500,1
BGE194W1,1,500,500,1

---------- Post updated at 02:12 AM ---------- Previous update was at 02:11 AM ----------

file2.txt

Code:
BGE179W1,40,34,26,50
BGE179W2,35,46,65,78

---------- Post updated at 02:13 AM ---------- Previous update was at 02:12 AM ----------

i want the output like

Code:
BGE179W1,1,500,500,1,40,34,26,50
BGE179W2,1,500,500,1,35,46,65,78
BGE179W3,1,500,500,1, , , , ,
BGE187W1,1,500,500,1, , , , ,
BGE187W2,1,500,500,1, , , , ,
BGE187W3,1,500,500,1, , , , ,
BGE194W1,1,500,500,1, , , , ,

---------- Post updated at 02:32 AM ---------- Previous update was at 02:13 AM ----------

i use this

Code:
/usr/xpg4/bin/awk -F "," '{getline a < "file2.txt.dat"}NR==1{print a, $3, $4 "\n"}NR==3{print a, $3, $4}' OFS="," file1.txt


Last edited by Scrutinizer; 03-26-2013 at 04:28 AM.. Reason: Code tags
# 6  
Old 03-26-2013
Try a small adaptation:
Code:
awk 'FNR==1{n+=NF} NR==FNR{i=$1; $1=x; A[i]=$0; next} {if($1 in A) $0=$0 A[$1]; else $(n-1)=x }1' FS=, OFS=, file2 file1

--edit--
I removed one of the empty fields in the output, because I figured there might be one too many in your sample..

Last edited by Scrutinizer; 03-26-2013 at 05:09 AM.. Reason: Removed one empty field
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Join, merge, fill NULL the void columns of multiples files like sql "LEFT JOIN" by using awk

Hello, This post is already here but want to do this with another way Merge multiples files with multiples duplicates keys by filling "NULL" the void columns for anothers joinning files file1.csv: 1|abc 1|def 2|ghi 2|jkl 3|mno 3|pqr file2.csv: 1|123|jojo 1|NULL|bibi... (2 Replies)
Discussion started by: yjacknewton
2 Replies

2. Shell Programming and Scripting

Join two files

I have 2 files: fileA AAA1:AAA2:AAA3:AAA_4:AAA5:AAA_6:AAA7:AAA_8 BBB1:BBB2:BBB3:BBB_4:BBB5:BBB-6 CCC1:CCC2:CCC3:CCC_4fileB AAA_4:XXX1:YYY1 BBB_4:XXX2:YYY2 CCC_4:XXX3:YYY3:ZZZ3 AAA_6:XXX4:YYY4 AAA_8:XXX5:YYY5Result: AAA1:AAA2:AAA3:AAA_4:XXX1:YYY1:AAA5:AAA_6:XXX4:YYY4:AAA7:AAA_8:XXX5:YYY5... (8 Replies)
Discussion started by: vikus
8 Replies

3. Shell Programming and Scripting

Join two files

Hi, I have two files Files, FileA and FileB which are attached.Each row in the files have 8 tab delimited columns. The two files have to be compared and joined based on first two columns. The resulting file FileC should have: 1. if the data in the first two columns is same in both the... (3 Replies)
Discussion started by: mehar
3 Replies

4. UNIX for Dummies Questions & Answers

How to use the the join command to join multiple files by a common column

Hi, I have 20 tab delimited text files that have a common column (column 1). The files are named GSM1.txt through GSM20.txt. Each file has 3 columns (2 other columns in addition to the first common column). I want to write a script to join the files by the first common column so that in the... (5 Replies)
Discussion started by: evelibertine
5 Replies

5. UNIX for Dummies Questions & Answers

how to join two files using "Join" command with one common field in this problem?

file1: Toronto:12439755:1076359:July 1, 1867:6 Quebec City:7560592:1542056:July 1, 1867:5 Halifax:938134:55284:July 1, 1867:4 Fredericton:751400:72908:July 1, 1867:3 Winnipeg:1170300:647797:July 15, 1870:7 Victoria:4168123:944735:July 20, 1871:10 Charlottetown:137900:5660:July 1, 1873:2... (2 Replies)
Discussion started by: mindfreak
2 Replies

6. Shell Programming and Scripting

Join two files

i have two files and i want to join the contents like: file a has content my name is i am i work at and file b has John sims 43 years old maximu ltd and i want to join the two files to get a third file with content reading my name is John sims i am 43 years old i work at... (2 Replies)
Discussion started by: tomjones
2 Replies

7. UNIX for Dummies Questions & Answers

Join 2 files with multiple columns: awk/grep/join?

Hello, My apologies if this has been posted elsewhere, I have had a look at several threads but I am still confused how to use these functions. I have two files, each with 5 columns: File A: (tab-delimited) PDB CHAIN Start End Fragment 1avq A 171 176 awyfan 1avq A 172 177 wyfany 1c7k A 2 7... (3 Replies)
Discussion started by: InfoSeeker
3 Replies

8. Shell Programming and Scripting

join two files

Hi i have file f1 like: xx yy| 123 xx1 yy1| 1234 xx2 yy2|12345 f2 file like: xx yy| aaa xx1 yy1| bbb xx2 yy2|cccc i would like output is: xx yy| 123|aaa xx1 yy1| 1234|bbbb xx2 yy2|12345|cccc please help me on this........... (5 Replies)
Discussion started by: koti_rama
5 Replies

9. Shell Programming and Scripting

join files

Hi , I want to join 2 files based on 2 column join condition. a11 john 2230 5000 a12 XXX 2230 A B 200 345 Expected O/P John 2230 5000 A B 200 I have tried this awk 'NR==FNR{a=$1;next}a&&sub($1,a)' a11 a12 > a13 (3 Replies)
Discussion started by: mohan705
3 Replies

10. Shell Programming and Scripting

Join Files

Hi Gurus, I have to join two flat files based on two key field columns. I concatenated two key fields and i tried the join command. It is working fine. But, without using temporary files can't i use like this: join -t ':' `awk -F ":" '{ printf("%s%s:%s\n", $1,$2, $0) }' file1` `awk -F ":" '{... (2 Replies)
Discussion started by: choppas
2 Replies
Login or Register to Ask a Question