Join


Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
# 1  
Join

Hi,
need some help in joining please,
FILE 1:
-------
1|05/20/2009|
2|04/21/2009|
2|03/21/2009|
FILE 2:
-------
1|Michel|Hawkins|05/10/2009|
1|Michel|Hawkins|03/10/2007|
2|Krish|Lander|09/10/2005|
FILE 3:
-------
1|M|32|03/22/2009|
2|M|42|04/22/2009|
2|M|41|03/10/2008|

I want to join these sorted files based on the first field of the first file, there can be multiples
in each file/s...Join should pick the top record matches with the first field of first file and pick
only certain fields from following files...
for example the joined file for above should look alike following...
1|Michel|Hawkins|M|32|
2|Krish|Lander|M|42|
any help is greatly appreciated...Thanks
# 2  
I will let you shorten this -

Code:
gawk -F "|" 'FILENAME=="1.txt"{!a[$1]++;next}
                FILENAME=="2.txt"{if($1 in b)next  
                     else b[$1]=$2"|"$3;next}  
            FILENAME=="3.txt"{if($1 in d)next 
               else d[$1]=$2"|"$3;next}     
    END{for(i in a)print i,b[i],d[i]}' OFS="|" 1.txt 2.txt 3.txt


-Devaraj Takhellambam
# 3  
Bug Join TWO Files

Hi,
I would like to Join the Below mwntioned TWO Files.
File 1.txt
---------
99|Table1|00|5
99|Table2|00|10
99|Table3|00|15
99|Table1|04|7

File 2.txt
---------
99|Table1|00|INF1
99|Table2|00|INF2
99|Table3|00|INF3
99|Table1|04|INF4
99|Table4|04|INF5
99|Table2|04|INF6


Expected Output:
------------------
99|Table1|00|INF1|5
99|Table2|00|INF2|10
99|Table3|00|INF3|15
99|Table1|04|INF4|7
99|Table4|04|INF5|0
99|Table2|04|INF6|0
99|Table2|00|INF6|10


Basically the First 3 Fileds of File 1.txt and 2.txt needs to be mathced, if it matches then pick the 4th filed from the 1.txt and append it to the 2.txt file record.

Can any one help me?
# 4  
if you have Python
Code:
#!/usr/bin/env python
file1={}
for line in open("file1"):
    line=line.strip().split("|")    
    file1['|'.join(line[:3])] = line[-1]
for line in open("file2"):
    line=line.strip().split("|") 
    one='|'.join(line[:3])
    if file1.has_key(one):   
        print "%s|%s|%s" %(one,line[-1],file1[one])
    else:
        print "%s|%s|%s" %(one,line[-1],"0")

output
Code:
# ./test.py
99|Table1|00|INF1|5
99|Table2|00|INF2|10
99|Table3|00|INF3|15
99|Table1|04|INF4|7
99|Table4|04|INF5|0
99|Table2|04|INF6|0

# 5  
Need Explanation

Hi,
Thanks for providing the solution,Could u please explain how it works........
# 6  
which solution you need explaining?
# 7  
Hi,
I need the below mentioned Solution explanation.

#!/usr/bin/env python
file1={}
for line in open("file1"):
line=line.strip().split("|")
file1['|'.join(line[:3])] = line[-1]
for line in open("file2"):
line=line.strip().split("|")
one='|'.join(line[:3])
if file1.has_key(one):
print "%s|%s|%s" %(one,line[-1],file1[one])
else:
print "%s|%s|%s" %(one,line[-1],"0")
Login or Register for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #946
Difficulty: Medium
A ping flood attack is a simple DOS attack where the attacker overwhelms the victim with TCP echo request packets.
True or False?

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. UNIX for Dummies Questions & Answers

Join?

Hi, I am trying to exclude certain rows in File 1, based on File 2. i.e. in the example below, File 3 should be the output; i.e. the rows in File 2 are excluded from File 1. Any hints/suggestions would be highly appreciated. Input File 1: a 1 xxx b 1 wje c 5 ere c 2 qqq d 3 yyy ... (9 Replies)
Discussion started by: pc2001
9 Replies

3. 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

4. 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

5. Shell Programming and Scripting

Join help

im trying to join 3 files together sort -n ${ASS1_DATA_DIR}Prac1 | sed '/^#/d' > ${ASS1_OUTPUT_DIR}Prac1temp sort -n ${ASS1_DATA_DIR}Prac2 | sed '/^#/d' > ${ASS1_OUTPUT_DIR}Prac2temp join -a1 -a2 -1 1 -2 1 -o "0 1.2 2.2" -e " " ${ASS1_OUTPUT_DIR}Prac1temp ${ASS1_OUTPUT_DIR}Prac2temp >... (6 Replies)
Discussion started by: bigubosu
6 Replies

6. UNIX for Dummies Questions & Answers

Join

Hi.. Just a question: Let's say we have three files: test1.txt --------- 11111111 6 12121212 7 12345678 4 11112222 8 test2.txt --------- 11111111 5 12345678 6 11112222 6 test3.txt --------- 12345678 6 12121212 8 (3 Replies)
Discussion started by: nelsonandwee
3 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

joining two files: File1: ----- 1|M 2|M 3|F File2: ----- 1|abc|def 3|xyz|pqr join -t '|' 1.txt 2.txt gives(Itried many other ways) 1|M|abc|def 3|F|xyz|pqr but I need the result like following (14 Replies)
Discussion started by: greenworld
14 Replies

9. Programming

sql,multiple join,outer join issue

example sql: select a.a1,b.b1,c.c1,d.d1,e.e1 from a left outer join b on a.x=b.x left outer join c on b.y=c.y left outer join d on d.z=a.z inner join a.t=e.t I know how single outer or inner join works in sql. But I don't really understand when there are multiple of them. can... (0 Replies)
Discussion started by: robbiezr
0 Replies

10. Shell Programming and Scripting

join (pls help on join command)

Hi, I am a new learner of join command. Some result really make me confused. Please kindly help me. input: file1: LEO oracle engineer 210375 P.Jones Office Runner ID897 L.Clip Personl Chief ID982 S.Round UNIX admin ID6 file2: Dept2C ID897 6 years Dept5Z ID982 1 year Dept3S ID6 2... (1 Reply)
Discussion started by: summer_cherry
1 Replies

Featured Tech Videos