join command


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting join command
# 1  
Old 02-21-2005
join command

Hi,

I'm using the join command and it appears to discard certain fields. Here are the two files i'm comparing:

File1:
1 a
2 b
3 c
4 d
99 f
101 g
999 i
200 j

File 2:
1 e
2 f
3 g
4 h
99 h
101 i
999 j
200 k

> join 1 2
results in:

1 a e
2 b f
3 c g
4 d h
99 f h
999 i j

So 101 and 200 have been ignored....any ideas why?

Cheers
# 2  
Old 02-21-2005
The files must be sorted first.

From the join manual page....
Quote:
file1 and file2 must be sorted in increasing ASCII-collating sequence
on the fields on which they are to be joined, usually the first in
each line.
So....
Code:
$ sort 1 > 1.sorted
$ sort 2 > 2.sorted
$ join 1.sorted 2.sorted
1 a  e
101 g  i
2 b  f
200 j  k
3 c  g
4 d  h
99 f  h
999 i  j

Cheers
ZB
# 3  
Old 02-21-2005
adding a tab to the output

Thanks - you were right it was because it wasn't correctly sorted.

Does anyone know how to add a tab to the output of the join command i.e. the fields that are added should be seperated from the rest with a tab?


e.g.

1 g </tab> h
3 g </tab> i

Cheers Smilie
# 4  
Old 02-21-2005
more join problems

Well here's my join issue

I have a file in the following format:
id/name/salary/position

and a file in the following format
number,amount,id

if I use sed to replace the different separators with a ":" and try to join them - the join fails to match on id.

However if I type the files in with the : separator already in place - the join works fine.

Sadly I am the instructor - and tested the script with my pre-made files (with the ":") but assigned the work with different separators to make the class use sed to convert them.

Both files are sorted (ascii) and other than the separators are identical. Anyone have a clue as to why this would happen?
# 5  
Old 02-21-2005
looking at 'man join':
Quote:
-1n uses the nth field of file1 as the join key field.

-2n uses the nth field of file2 as the join key field.
# 6  
Old 02-21-2005
I did that:

join -t: -1 3 -2 1 file1 file2

and if I hand type the files in - no problem. If however I use the original files with the differing separators, use sed to convert them to a ":" then the join fails. Same command, same file (except the separators in one have been manually entered, and the second time they were converted) different results

sigh such a pita
# 7  
Old 02-21-2005
could you post a sample script AND sample input files?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Join Command

Hi, Please explain the working process of join command. File 1 P B S A C AFile2 C B P A S DBut the output of join command is... join File1.txt File2.txt P B A S A DBut I guess the output should be P B A S A D C A BPlease correct me,if i am worong or missing some thing. Thanks (2 Replies)
Discussion started by: satyar
2 Replies

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

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

4. Shell Programming and Scripting

awk command for simple join command but based on 2 columns

input1 a_a a/a 10 100 a1 a_a 20 200 b1 b_b 30 300 input2 a_a a/a xxx yyy a1 a1 lll ppp b1 b_b kkk ooo output a_a a/a 10 100 xxx yyy (2 Replies)
Discussion started by: ruby_sgp
2 Replies

5. Shell Programming and Scripting

need help with join command

Hello, I am using join to merge two files together. The defaults usually works great join file1 file2 However, sometimes file1 or file2 has more keys, which I want to keep. file 1: -1 z 0 a 1 b 2 c file 2: 0 a2 1 b2 2 c2 3 c3 So I do join -a1 -a2 file1 file2 But then you don't... (0 Replies)
Discussion started by: ayu
0 Replies

6. Shell Programming and Scripting

using join command

I am given: Sara:Smith:11234:3:63498:25:40 Perry:Potter:12445:2:35664:15:40 Ann:Abbott:23323:2:54865:22:42 Maple:Myers:24223:1:63498:18:35 Harold:Hanson:35664:2:54865:10:40 Bob:Brown:40778:1:24223:15:40 Jane:Jones:41288:1:53498:24:40 Wanda:Wallace:51122:4:63498:55:40... (4 Replies)
Discussion started by: ehshi1992
4 Replies

7. Shell Programming and Scripting

join command

All, I have 3 files (tab seperated): Note: Please treat dash (-) as empty value in the file, I have added it to make input easily readable file1: (2 cols) A 1 B 2 C 3 file2: (4 cols - col4 has empty values for 4th column except 2nd row) A 1 5 - B 2 6 Y C 3 7 - D 4 8 - file3... (1 Reply)
Discussion started by: bgmmk
1 Replies

8. Shell Programming and Scripting

Join command

Dear Experts, I have several (say 'm') text files, each with 'n' columns. I want to put them into a large single file with n*m columns. a 1 a 1 a 1 a 1 b 2 b 5 b 1 b 3 c 3 c 7 ... (1 Reply)
Discussion started by: Mish_99
1 Replies

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

10. Shell Programming and Scripting

Join Command Help

Hi, I am trying to use join command for two files of size greater than 1 GB. join -t , -1 2 -2 1 -o 1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,1.10,1.11,1.12,1.13,1.14,1.15,1.16,1.17,1.18,1.19,1.20,1.21,1.22,1.23 File1 File2 > File3 we are facing space crunch after using these join command. May i... (0 Replies)
Discussion started by: jerome Sukumar
0 Replies
Login or Register to Ask a Question