awk program for file comparison


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk program for file comparison
# 1  
Old 04-30-2009
awk program for file comparison

Hello there,


I'm trying to write an awk program in bash shell with the following three input files:


File 1
1001 1 2 3
1002 4 5 6
1003 7 8 9
1004 10 11 12

File 2
1001 11 22 33
1002 44 55 66
1004 100 111 122

File 3
1001 111 222 333
1004 130 141 152

I would like to compare the first field of File3 with the first field of File 2. If a particular first field in File 2 doesn't exist in File 3, then I want to delete that entire row in File 2.

For example, first field on Row 2 of File 2 (=1002) doesn't exist in File 3. Hence I want to delete this row in File 2 and save it.

Now I want to compare File 3 and File 1. We see that the first field of second row (=1002) and the first field of the third row (=1003) of File 1 doesn't exist in File 3. I want to delete these two rows from File 1 and save it.

After the above steps, the three files would result as the following:

File 1
1001 1 2 3
1004 10 11 12

File 2
1001 11 22 33
1004 100 111 122

File 3
1001 111 222 333
1004 130 141 152


Any help is greatly appreciated.
# 2  
Old 04-30-2009
You cna use the join command and do what your looking for using the same steps you describe.
Code:
join -1 1 -2 1 -t " " -o 2.1,2.2,2.3,2.4 file3 file2 > newFile2
join -1 1 -2 1 -t " " -o 2.1,2.2,2.3,2.4 file3 file1 > newFile1

# -1 1  use column one of first file 'file3'
# -2 1  use column one of second file 'file2' or 'file1'
# -t " " use {space} as a delimter
# -o use fields 1,2,3,4 from second file as output

# 3  
Old 04-30-2009
Hi ldapswandog,

Thanks a lot for the info. I did try out the command 'join' as you mentioned but I got the following result for the newfile2.

1001 11
1004 100

instead of:

1001 11 22 33
1004 100 111 122

Am I doing something wrong?

Appreciate your guidance.
# 4  
Old 05-01-2009
Code:
 $ join -1 1 -2 1 -o 2.1 2.2 2.3 2.4 file3 file1

1001 1 2 3
1004 10 11 12


Code:
$ join -1 1 -2 1 -o 2.1 2.2 2.3 2.4 file3 file2

1001 11 22 33
1004 100 111 122


cheers,
Devaraj Takhellambam
# 5  
Old 05-01-2009
Hi Devaraj,

Thanks so much. It is working now. I guess the -t " " was the issue (but don't know why).

Regards,
kbirde
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

File comparison and proccessing using awk

Hi Guys, I am having two requirement in one of my scripts. please help out to find a fast solution using AWK (since there is lot of data to be processed) 1) First snippet - File1 has two columns and file2 has three columns If any value of column 1 of file1 matches with column 1... (4 Replies)
Discussion started by: stormfield
4 Replies

2. Shell Programming and Scripting

File comparison using awk

Hi All, i have two files file1 ,file 2 file 1 col1|col2|col3|col4|col5|col6|col7|col8 11346925|0|2009-09-20|9999-12-31|100|0 11346925|0|2009-09-20|9999-12-31|120|0 12954311|0|2009-09-11|9999-12-31|100|0 12954311|0|2009-07-23|2999-12-31|120|0 12954312|0|2009-09-11|9999-12-31|100|0... (9 Replies)
Discussion started by: mohanalakshmi
9 Replies

3. Shell Programming and Scripting

File comparison using awk

my files are as follows fileA sepearated by tab /t 00 lieferungen 00 attractiop 01 done 02 forness 03 rasp 04 alwaysisng 04 funny 05 done1 fileB funnymou120112 funnymou234470 mou3raspnhdhv rddfgmoudone1438748 so all those record which are greater than 3 and which are not... (6 Replies)
Discussion started by: rajniman
6 Replies

4. Shell Programming and Scripting

awk file comparison, x lines after matching as output

Hello, I couldn't find anything on the Forum that would help me to solve this problem. Could any body help me process below data using awk? I have got two files: file1: Worker1: Thomas Position: Manager Department: Sales Salary: $5,000 Worker2: Jason Position: ... (5 Replies)
Discussion started by: killerbee
5 Replies

5. Shell Programming and Scripting

Urgent Help Required for File Comparison using Awk

Hello All, I am having a below requirement. File1 contains KEY|VIN|SEQUENCE|COST 101 | XXX111 | 1 | 234.22 234 | XXX111 | 2 | 134.32 444 | ABC234 | 1 | 100.22 555 | DFF611 | 1 | 734.82 FILE 2 Contains only VINs XXX111 DFF611 Now if the VIN from file 1 is present in... (8 Replies)
Discussion started by: dinesh1985
8 Replies

6. Shell Programming and Scripting

awk column comparison big file

Hi all, I would like to compare a column in one file to a column in another file and when there is a match it prints the first column and the corresponding second column. Example File1 ABA ABC ABE ABF File 2 ABA 123 ABB 124 ABD 125 ABC 126 So what I would like printed to a... (6 Replies)
Discussion started by: pcg
6 Replies

7. Shell Programming and Scripting

awk comparison

Hello all, Probably a very simple question, I am stuck with a small part of a code: I am trying to do a comparison to get the maximum value of column 6 if columns 1, 4 and 5 of two or more rows match. Here is what I am doing: awk -F'\t' '{if ($6 > a)a=$6}END{for (i in a) print i"\t"a}' ... (4 Replies)
Discussion started by: jaysean
4 Replies

8. Shell Programming and Scripting

Comparison and editing of files using awk.(And also a possible bug in awk for loop?)

I have two files which I would like to compare and then manipulate in a way. File1: pictures.txt 1.1 1.3 dance.txt 1.2 1.4 treehouse.txt 1.3 1.5 File2: pictures.txt 1.5 ref2313 1.4 ref2345 1.3 ref5432 1.2 ref4244 dance.txt 1.6 ref2342 1.5 ref2352 1.4 ref0695 1.3 ref5738 1.2... (1 Reply)
Discussion started by: linuxkid
1 Replies

9. Shell Programming and Scripting

Looking for AWK Solution for column comparison in a single file

- I am looking for different kind of awk solution which I don't think is mentioned before in these forums. Number of rows in the file are fixed Their are two columns in file1.txt 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 I am looking for 3... (1 Reply)
Discussion started by: softwarekids23
1 Replies

10. UNIX for Dummies Questions & Answers

AWK Program File Help

I have some .dat files that I cannot open and read the data. It is an awk program file, and my question would be to you all is there a way to convert this awk file to ascii text? Thanks (10 Replies)
Discussion started by: ryangfm
10 Replies
Login or Register to Ask a Question