merging two files


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting merging two files
# 1  
Old 09-13-2008
Question merging two files

Friends,
os: redhat enterprise linux/SCO UNIX5.0

I have two files and I would like to merge on given key value.

Quote:
File1
111 : abcd : 75000 : newdelhi : jacob
222 : cdef : 50000 : mumbai : smith
334 : defg : 80000 : chennai : murphy
445 : dfgh : 80000 : kolkota : richard
555 : fhtk : 80000 : mumbai : gary
666 : hktk : 55000 : newdelhi : viva

file2
peter, 70000, ahmedabad, 777
jacob, 75000, newdelhi, 112
serly, 90000, nagpur, 888
rihcard, 80000, kolkata, 450
turig, 90000, newdelhi, 765
Here you can observe that the file1 is delimited with ":" and file2 with ","
and the out put I want is :

output on name base:
jacob newdelhi 75000 112 111
richard kolkota 80000 445 450

output on city base:
newdelhi 111 112 75000 jacob
kolkota 445 450 60000 richard
Now I have tried with join commd but it does not supporte multiple delimiters.
and if records length is not fixed.

join -a1 5 -a2 1 -t[;,] -o file1 file2 > outname

Can any one give details if join supports strings base join uitlity.
Thanks in advance friends.
# 2  
Old 09-13-2008
You have some typo's in the posted files, assuming the files look like:

Quote:
file1
111 : abcd : 75000 : newdelhi : jacob
222 : cdef : 50000 : mumbai : smith
334 : defg : 80000 : chennai : murphy
450 : dfgh : 80000 : kolkota : richard
555 : fhtk : 80000 : mumbai : gary
666 : hktk : 55000 : newdelhi : viva

file2
peter, 70000, ahmedabad, 777
jacob, 75000, newdelhi, 112
serly, 90000, nagpur, 888
richard, 80000, kolkata, 445
turig, 90000, newdelhi, 765
and you have spaces after the comma's and around the colons:

Code:
awk -F ' |,' '
NR==FNR{a[$1]=$NF;next}
$NF in a{print $NF" "$1" "$7" "$5" "a[$NF]" "$1}' file2 file1

For the second solution, just change the order of the fields in the print command.

Regards
# 3  
Old 09-13-2008
Shouldn't the the -F option be?
Code:
awk -F ' :,'  ........

# 4  
Old 09-13-2008
Quote:
Originally Posted by jim mcnamara
Shouldn't the the -F option be?
Code:
awk -F ' :,'  ........

Code:
-F ' |,'

specifies two different field separators, a space or a comma while
Code:
 -F ' :,'

specifies one field separator of 3 characters. So the answer is no.

Regards
# 5  
Old 09-14-2008
Bug merging files

Dear Franklin52
Omg thanks lot for your prompt reply and precise script.Sorry for
the typo excuse me for that .Just for my knowledge would you please explain the point .

Secondly does join command support two field seperator ?? If yes the
what is the syntex ??
Only to know .Have great weekend.

Cheers .
# 6  
Old 09-14-2008
base name:

Code:
sed -e 's/,/:/g' -e 's/ //g' b > b.t
sed 's/ //g' a> a.t
nawk 'BEGIN{FS=":"}
{
if(NR==FNR)
	name[$5]=sprintf("%s %s %s",$4,$3,$1)
else
{
	if(name[$1]!="")
		final[$1]=sprintf("%s %s",name[$1],$4)
}
}
END{
for(i in final)
	print i" "final[i]
}' a.t b.t
rm a.t b.t

# 7  
Old 09-14-2008
Quote:
Originally Posted by vakharia Mahesh
Dear Franklin52
Omg thanks lot for your prompt reply and precise script.Sorry for
the typo excuse me for that .Just for my knowledge would you please explain the point .
An explanation of the code:

awk -F ' |,'

Specify 2 field separators, a spacer or a comma.

NR==FNR is true if you read the first file (file2).

{a[$1]=$NF;next}

Create an array a with the first field as index and assign the value of the last field to the array. Read the next line of file2.

$NF in a{print $NF" "$1" "$7" "$5" "a[$NF]" "$1}

This line affects file1, if the last field is an existing index of array a print the given fields.

Quote:
Originally Posted by vakharia Mahesh
Secondly does join command support two field seperator ?? If yes the
what is the syntex ??
A passage from the manpage:

Quote:
The default input field separators are blank, tab, or new-
line. In this case, multiple separators count as one field
separator, and leading separators are ignored. The default
output field separator is a blank.
Regards
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Merging two files

Hi All , I have a scenario where we need to combine two files . Below are the sample files and expected output , File 1: 1|ab 1|ac 1|ae 2|ad 2|ac File 2: 1|xy 1|fc 2|gh 2|ku Output file : 1|ab|xy (3 Replies)
Discussion started by: saj
3 Replies

2. Shell Programming and Scripting

Merging two files

Guys, I am having little problem with getting a daily report! The daily process that I do is as follows 1. Unload Header for the report from the systables to one unl file, say Header.unl 2. Unload the data from the required table/tables to another unl file, say Data.unl 3. Send a... (2 Replies)
Discussion started by: PikK45
2 Replies

3. Shell Programming and Scripting

Help with merging 2 files into 1

::::::::: ::FileA:: ::::::::: A1-------A2--------A3---A4---A5-- ================================= AC5VXVLT-XX---------------------- B57E434--XXXX1-----MMMM-ZZZ--111- C325G20--XXXXX3----CCCC------3332 DC35S51--XXXXY1----DDDD------44X- DC35S52--XXXXY2----DDDD------44Y-... (5 Replies)
Discussion started by: lordsmiter
5 Replies

4. Shell Programming and Scripting

Merging files

I have two files file 1 containing x rows and 1 column file 2 containing x rows and 1 column I want to merge both the files and add a comma between the two eg plz guide (1 Reply)
Discussion started by: test_user
1 Replies

5. UNIX for Dummies Questions & Answers

Merging two files

Hi, I have two files a.txt and b.txt. a.txt 1 2 3 4 b.txt a b c d e I want to generate a file c.txt by merging these two file and the resultant file would contain c.txt 1 (4 Replies)
Discussion started by: siba.s.nayak
4 Replies

6. Shell Programming and Scripting

merging of files.

Hi, I want to merge the two files on the basis of columns like... file 1 Data Key A 12 B 13 file2 Data Value A A1 A A2 B B1 B B2 (5 Replies)
Discussion started by: clx
5 Replies

7. Shell Programming and Scripting

merging two files

Hi everyone, I have two files which will be exactly same at first. After sometime there will be inserts in one file. My problem is how to reflect these changes in second file also. I found out that any compare and merge utility would do the job like, GNU " sdiff " command. But the... (14 Replies)
Discussion started by: rameshonline
14 Replies

8. Shell Programming and Scripting

Help with merging files

i would like to merge two files that have the same format but have different data. i would like to create one output file that contains information from both the original files.:rolleyes: (2 Replies)
Discussion started by: joe black
2 Replies

9. Shell Programming and Scripting

Merging 2 files

Hi, I have got two files 1.txt 1111|apple| 2222|orange| 2.txt 1111|1234|000000000004356| 1111|1234|000000001111| 1111|1234|002000011112| 2222|5678|000000002222| 2222|9102|000000002222| I need to merge these two so that my out put looks like below: Search code being used should be... (4 Replies)
Discussion started by: jisha
4 Replies

10. Shell Programming and Scripting

merging files

Thanks in advance I have 2 files having key field in each.I would like to join both on common key.I have used join but not sucessful. The files are attached here . what i Want in the output is on the key field SLS OFFR . I have used join commd but not successful. File one ======= SNO ... (6 Replies)
Discussion started by: vakharia Mahesh
6 Replies
Login or Register to Ask a Question