awk - comparing files


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk - comparing files
# 1  
Old 05-05-2005
awk - comparing files

I've been trying to use awk to compare two files that have pretty much the same data in apart from certain lines where in one file a fields value has changed. I want to print the line from the first file and the changed line from the second file.
At the moment, all I can get it to do is print the line that contains the changed value.
Here's some example data:

File1:
111:222:333:444
222:333:444:555
333:444:555:666

File2:
112:222:333:444
222:333:444:555
333:444:555:667

As you can see the first field in the first line in file2 has changed and also the last field in last line has changed. So I'm looking for the output to be something like:

file1 old - 111:222:333:444
file2 new - 112:222:333:444
---------------------------
file1 old - 333:444:555:666
file2 new - 333:444:555:667

The awk I've written so far is:

awk 'BEGIN {
while (getline < "file1" > 0)
arr[$0] = $0
}
{
if ($0 in arr) {
continue
} else {
print NR" - file2 - "$0
print "-----------------------------------------------------------------------------------------------"
}
}
' file2

This only prints the line that has changed in the second file

Can any one help?

Cheers
# 2  
Old 05-05-2005
nawk -f db.awk file1 file2

here's db.awk:
Code:
BEGIN {
  FS=":"
}

FNR == NR { if (FNR==1) file1=FILENAME;  arr[NR]=$0; next }
{
  if ($0 != arr[FNR]) {
    printf("%s old - %s\n", file1, arr[FNR])
    printf("%s new - %s\n", FILENAME, $0)
    print "-----------------------------"
  }
}

# 3  
Old 05-06-2005
Thank you kind sir...that's exactly what I'm looking for

Cheers
# 4  
Old 08-22-2008
Comparing two files and getting the output

Quote:
Originally Posted by vgersh99
nawk -f db.awk file1 file2

here's db.awk:
Code:
BEGIN {
  FS=":"
}
 
FNR == NR { if (FNR==1) file1=FILENAME;  arr[NR]=$0; next }
{
  if ($0 != arr[FNR]) {
    printf("%s old - %s\n", file1, arr[FNR])
    printf("%s new - %s\n", FILENAME, $0)
    print "-----------------------------"
  }
}

Hi,
I have 2 files File1.txt and File2.txt

File1.txt
123|Rosy|Chicago|
234|stella|michigan|
999|Richard|NJ|

File2.txt
123|Rosy|Chicago|
235|Stella|michigan|
999|Richard|NJ|ABN

I want to compare the two files and get the output as below:
Old:234|stella|michigan
New:235|Stella|michigan|

I used your above solution,but its giving error.

I used the command awk -f db.awk File1.txt File2.txt

Can someone help me in this regard?
# 5  
Old 08-22-2008
Pls don't hijack threads - create a new thread for your issue.
Read the rules.
# 6  
Old 01-18-2009
hello
File1:
111:222:333:444
222:333:444:555
333:444:555:666

File2:
112:222:333:444
222:333:444:555
333:444:555:667
here i want o/p like
first field and that mismatch field
333:666
333:667
# 7  
Old 01-18-2009
Code:
nawk 'NR==FNR{_[NR]=$0}
NR!=FNR{
	if($0 != _[FNR])
	{
		print "Old:"_[FNR]
		print "New:"$0
	}
}' file1 file2

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Comparing two txt files with AWK

Hi, I need to compare two text files with awk. File1: ------- chr1 43815007 43815009 COSM19193 REF=TG;OBS=AA;ANCHOR=G AMPL495041 chr1 43815008 43815009 COSM18918 REF=G;OBS=T;ANCHOR=T AMPL495041 chr1 115256527 115256528 ... (6 Replies)
Discussion started by: RushiK
6 Replies

2. Shell Programming and Scripting

awk for comparing two files

so have file1 like this: joe 123 jane 456 and then file2 like this: 123 left right 456 up down joe ding dong jane flip flop what I need to do is compare col1 and col2 in file1 with col1 in file2 and generate a new file that has lines like this: joe 123 ding dong left right jane... (11 Replies)
Discussion started by: Jaymz
11 Replies

3. Shell Programming and Scripting

Comparing the matches in two files using awk when both files have their own field separators

I've two files with data like below: file1.txt: AAA,Apples,123 BBB,Bananas,124 CCC,Carrot,125 file2.txt: Store1|AAA|123|11 Store2|BBB|124|23 Store3|CCC|125|57 Store4|DDD|126|38 So,the field separator in file1.txt is a comma and in file2.txt,it is | Now,the output should be... (2 Replies)
Discussion started by: asyed
2 Replies

4. Shell Programming and Scripting

comparing 2 files with awk

Hi, I'm a new user in awk and i'm trying to compare two files to create a third one if some values match in both files. The first file has this content: s 45.960746365 _21_ AGT 2490 [21:0 22:0 s 45.980418496 _21_ AGT 2491 [21:0 22:0 s 46.000090627 _21_ AGT 2492 [21:0 22:0 s 47.906552206... (2 Replies)
Discussion started by: carlosoria
2 Replies

5. UNIX for Advanced & Expert Users

Comparing two files using awk

i have one file say file1 having many records.Each record contains 2000 characters.i have to compare 192-200 (stored as name)characters in this file from other file say file2 having name stored in 1-9 characters. after comparing i have to print the record from file1 in another file say file3 ... (3 Replies)
Discussion started by: sonam273
3 Replies

6. Shell Programming and Scripting

comparing two files using awk

hit brick wall while trying to knock up a script that will take values from the "lookup" file and look it up in the "target" file and return values that dont appear in "target" but do in "lookup". just knocked up something using bits from previous threads but theres gotta be something wrong... (13 Replies)
Discussion started by: jack.bauer
13 Replies

7. Shell Programming and Scripting

Comparing 2 input files -Awk

Compare 2 files and print the values input1 (c1 20 100 X_y10) along with one closest highest (c1 100 200 X_y10) and one lowest values (c1 10 15 X_y10) from input2 input1 c1 20 100 X_y10 input2 c1 5 10 X_y10 c1 10 15 X_y10 c1 100 200 X_y10 c1 200 300 X_y10 output ... (8 Replies)
Discussion started by: bumblebee_2010
8 Replies

8. Shell Programming and Scripting

comparing files with field using awk

hi, i have 1 files a.csv temp.out a.cvs looks like add,16390,180,674X,HALIFAX_COMMONS_X,902,497,902-209 add,16390,180,674X,HALIFAX_COMMONS_X,902,497,902-219 add,16390,180,674X,HALIFAX_COMMONS_X,902,497,902-220 add,16390,180,674X,HALIFAX_COMMONS_X,902,497,902-221 and temp.out looks... (1 Reply)
Discussion started by: raghavendra.cse
1 Replies

9. Shell Programming and Scripting

Comparing two files using awk

Hi, I have 2 text files n1 and n2. cat n1 : -------- 1234567890 4444444444 cat n2 : --------- 1234567890 4444444444 7777777777 8888888888 they are some sample records. File n1 contains some lookup records, whereas file n2 contains some transaction records. I need to get the... (2 Replies)
Discussion started by: kanu_kanu
2 Replies

10. Shell Programming and Scripting

comparing two files using awk.

Hi All, a new bie to awk, How to compare substring of col1,file 1 with col2file2 and get file1contents+col3file2 as output. file1 ----- kumarfghh,23,12000,5000 rajakumar,24,14000,2500 rajeshchauhan,25,16000,2600 manoj,26,17000,2300 file 2 -------- 123,kumar,US, 123,sukumar,UK... (4 Replies)
Discussion started by: jerome Sukumar
4 Replies
Login or Register to Ask a Question