mergng of two files


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting mergng of two files
# 1  
Old 01-02-2006
mergng of two files

Hello everybody,
I am getting unexpected result while trying to merge two files. Files are like
$ cat one

10,1,2
20,4,5
30,7,8
ID,A,B

$ cat two

3,10
6,20
9,30
C,ID

While paasing the command "join -t, -1 1 -2 2 -o 1.1,1.2,1.3,2.1 one two", I am getting

ID,A,B,C

where as I am supposed to get

10,1,2,3
20,4,5,6
30,7,8,9
ID,A,B,C

Can anyone explain me why I am getting this unexpected result? Let me tell I am running the script in SunOS.

Many regards,
Rink..
# 2  
Old 01-02-2006
modify ur join command

Hi Rink,
you can use several ways to join 2 flat files. In ur join command first add a sed which will put a column separator in the file and then based on the separator you can join either equi join, or outer join as per your requirement.

Use this sed
Cat file1
10,1,2
20,4,5
30,7,8
ID,A,B
sed 's/^\(..\)\(.*\)$/\1\|\2/g' file1 > file1.tmp

cat file1.tmp
10|,1,2
20|,4,5
30|,7,8
ID|,A,B

put the nbr of characters that would be a part of your keys in the first bracket.
Same way for the second file

sed 's/^\(..\)\(.*\)$/\1\|\2/g' file2 > file2.tmp
cat file2
10,3
20,4
30,5
C,ID

NOTE:
Since your file2 has keys at the end use a cut command to bring it as column one.
Cat file2.tmp
10|,3
20|,4
30|,5
C,|ID

then put a equi join on this


join -j1 1 -j2 1 -t'|' file1.tmp file2.tmp > file.out


cat file.out
10|,1,2|,3
20|,4,5|,4
30|,7,8|,5

For outer join use
join -j1 1 -j2 1 -t'|' -v 1 file1.tmp file2.tmp > file1.out

cat file1.out
ID|,A,B

and finally delete “|” character from the file.

sed 's/\|//g' file.out

cat filename

10,1,2,3
20,4,5,4
30,7,8,5


Note : If you have only one separator as”,” you can use without going for sed . In such case use”,” in place of "|" in the join command

Hope this would help you.

-Manish
# 3  
Old 01-02-2006
Merging of two files

Thanks Manish for your response.
As the two files are comma delimited, so we dont need any other delimiter for the purpose. Let me say, the position of the key field used for joining/merging, does not matter. They can be at any place in the corresponding files. All we need to do is, pass the exact field number in the switch (-1 pos_field1 -2 pos_field2) for joing command.
My code is working fine. I had missed to sort the two files which is mandatory before going to merge. But thanks for the effort you put.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Automate splitting of files , scp files as each split completes and combine files on target server

i use the split command to split a one terabyte backup file into 10 chunks of 100 GB each. The files are split one after the other. While the files is being split, I will like to scp the files one after the other as soon as the previous one completes, from server A to Server B. Then on server B ,... (2 Replies)
Discussion started by: malaika
2 Replies

2. Shell Programming and Scripting

Shell script for field wise record count for different Files .csv files

Hi, Very good wishes to all! Please help to provide the shell script for generating the record counts in filed wise from the .csv file My question: Source file: Field1 Field2 Field3 abc 12f sLm 1234 hjd 12d Hyd 34 Chn My target file should generate the .csv file with the... (14 Replies)
Discussion started by: Kirands
14 Replies

3. Shell Programming and Scripting

Append string to all the files inside a directory excluding subdirectories and .zip files

Hii, Could someone help me to append string to the starting of all the filenames inside a directory but it should exclude .zip files and subdirectories. Eg. file1: test1.log file2: test2.log file3 test.zip After running the script file1: string_test1.log file2: string_test2.log file3:... (4 Replies)
Discussion started by: Ravi Kishore
4 Replies

4. UNIX for Advanced & Expert Users

Find all files in the current directory excluding hidden files and directories

Find all files in the current directory only excluding hidden directories and files. For the below command, though it's not deleting hidden files.. it is traversing through the hidden directories and listing normal which should be avoided. `find . \( ! -name ".*" -prune \) -mtime +${n_days}... (7 Replies)
Discussion started by: ksailesh1
7 Replies

5. Shell Programming and Scripting

How to create zip/gz/tar files for if the files are older than particular days in UNIX or Linux?

I need a script file for backup (zip or tar or gz) of old log files in our unix server (causing the space problem). Could you please help me to create the zip or gz files for each log files in current directory and sub-directories also? I found one command which is to create gz file for the... (4 Replies)
Discussion started by: Mallikgm
4 Replies

6. Shell Programming and Scripting

need a shell script to extract the files from source file and check whether those files existonserve

Hi, I am new to shell scripting.Please help me on this.I am using solaris 10 OS and shell i am using is # echo $0 -sh My requirement is i have source file say makefile.I need to extract files with extensions (.c |.cxx |.h |.hxx |.sc) from the makefile.after doing so i need to check whether... (13 Replies)
Discussion started by: muraliinfy04
13 Replies

7. UNIX for Dummies Questions & Answers

write a program in c in unix that display the files(includ sub-direc and files within) in a sorted

the sorting is based on name of file, file size modification time stamps o f file it should dislay the output in the following format "." and ".." enteries should be ignored please give some idea how to do it (1 Reply)
Discussion started by: pappu kumar jha
1 Replies

8. Shell Programming and Scripting

How to extract data from indexed files (ISAM files) maintained in an unix server.

Hi, Could someone please assist on a quick way of How to extract data from indexed files (ISAM files) maintained in an UNIX(AIX) server.The file data needs to be extracted in flat text file or CSV or excel format . Usually we have programs in microfocus COBOL to extract data, but would like... (2 Replies)
Discussion started by: devina
2 Replies

9. Shell Programming and Scripting

How to retrieve all the linked script files/ctl files/sql files?

Hi I am going to migrate our datawarehouse system from HP Tru 64 Unix to the Red Hat Linux. Inside the box, it is running around 40 cron jobs; inside each cron job, it is calling other shell script files, and the shell script files may again call other shell script files or ctl files(for... (1 Reply)
Discussion started by: franksubramania
1 Replies
Login or Register to Ask a Question