Comparison of 2 files in UNIX


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Comparison of 2 files in UNIX
# 8  
Old 11-12-2007
You can turn around the files.Smilie
Code:
grep -vf file4 file3

# 9  
Old 11-12-2007
Data

well i tried that it is displaying
grep -vf file4 file3

mat

but criteria is that
i shud be getting rat and hat ( file 4 is assumed as updated version of file3 by the user concerned) as on comparing the 2nd and 3rd place values of file 4 do NOT match with the 2nd and 3rd place values of file3

file3
bat
mat
rat


file4
bat
rat
hat

Smilie
# 10  
Old 11-12-2007
Can you provide one sample input file each for file1 and file2. Also show us what you want in the resulting file3.
# 11  
Old 11-12-2007
Data

for eg there are two files to be compared
file1
1111 | universe
2222 |good
3333 |good
4444 |good



file2
1111 | universe
3333 |universe
2222 |good
4444 |good



the contents of both the files will be compared row wise( i.e. row 1 content of file1 to be compared with row 1 content of file2 and so on)

if there is any difference/change in values (it can be numbers or those words) of corresponding rows then the script will pick up the numbers of field one(f 1) from file2 NOT file1.

like here the script should pick up 3333 and 2222 ( 2nd and 3rd positions values of file2) from file2 and redirect it to another to another third file.Smilie
# 12  
Old 11-12-2007
You could read in the files simultaneously by opening them in different file descriptors, then use "read" to read from these descriptors.

Code:
exec 3</path/to/file1
exec 4</path/to/file2

typeset chBuffer1=""
typeset chBuffer2=""

while read -u3 chBuffer1 ; do
     read -u4 chBuffer2
     if [ <put your tests using chBuffer1 and chBuffer2 here> ] ; then
          ....
     else
          ....
     fi
done

exec 3<&-
exec 4<&-

bakunin
# 13  
Old 11-12-2007
Would sdiff help you?
# 14  
Old 11-12-2007
Hi.

Here is a shell driver script:
Code:
#!/usr/bin/env sh

# @(#) s2       Demonstrate perl line reading, comparison.

set -o nounset
echo

debug=":"
debug="echo"

## Use local command version for the commands in this demonstration.

echo "(Versions displayed with local utility \"version\")"
version >/dev/null 2>& 1 && version bash perl

echo

echo " Data files data1 data2:"
cat data1
echo
cat data2

echo
echo " perl script output, filtered:"
./p1 data1 data2 |
cut -d"|" -f1

exit 0

which calls a perl script:
Code:
#!/usr/bin/perl

# @(#) p1       Demonstrate display of line-by-line differences.

use warnings;
use strict;

my ($debug);
$debug = 1;
$debug = 0;

my ( $f1, $f2, $file1, $file2, $line1, $line2, $EOF1, $EOF2 );
my ($lines) = 0;

$EOF1 = $EOF2 = 0;

$file1 = shift || die " usage: $0 file_1 file2\n";
$file2 = shift || die " usage: $0 file_1 file2\n";

open( $f1, "<", $file1 ) || die " Cannot open file $f1\n";
open( $f2, "<", $file2 ) || die " Cannot open file $f2\n";

while (1) {
  if ( not( $line1 = <$f1> ) ) {
    $EOF1 = 1;
  }

  if ( not( $line2 = <$f2> ) ) {
    $EOF2 = 1;
  }

  if ( $EOF1 + $EOF2 != 0 ) {
    print STDERR " Checking EOF on both files.\n" if $debug;
    if ( $EOF1 == 0 ) {
      print STDERR " Note - file $file1 has extra lines, stopping.\n";
    }
    if ( $EOF2 == 0 ) {
      print STDERR " Note - file $file2 has extra lines, stopping.\n";
    }

    # In any case, this is our last read
    last;
  }

  $lines++;
  if ( index( $line1, $line2 ) != 0 ) {
    print $line2;
  }
}

print STDERR " ( Complete pairs of lines read: $lines )\n";

exit(0);

Producing from your data on files data1 and data2:
Code:
% ./s2

(Versions displayed with local utility "version")
GNU bash 2.05b.0
perl 5.8.4

 Data files data1 data2:
1111 | universe
2222 |good
3333 |good
4444 |good

1111 | universe
3333 |universe
2222 |good
4444 |good

 perl script output, filtered:
 ( Complete pairs of lines read: 4 )
3333
2222

cheers, drl
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Comparison of files

I have the requirement I have two files cat fileA something anythg nothing everythg cat fileB everythg anythg Now i shld use fileB and compare every line at fileA and get the output as something nothing (3 Replies)
Discussion started by: Priya Amaresh
3 Replies

2. Shell Programming and Scripting

UNIX file comparison

I have two files which has component name and version number separated by a space cat file1 com.acc.invm:FNS_PROD 94.0.5 com.acc.invm:FNS_TEST_DCCC_Mangment 94.1.6 com.acc.invm:FNS_APIPlat_BDMap 100.0.9 com.acc.invm:SendEmail 29.6.113 com.acc.invm:SendSms 12.23.65 cat file2 ... (8 Replies)
Discussion started by: rakeshtomar82
8 Replies

3. Shell Programming and Scripting

Need help regarding comparison between two files through UNIX script

Hi All , I am aware of unix command ,but not comforable in putting together in script level.I came to situation where I need to compare between two .txt files fieldwise and need a mismatch report. As I am new to unix script arena ,if anyone can help in the below scenario that will be really... (9 Replies)
Discussion started by: STCET22
9 Replies

4. Shell Programming and Scripting

Comparison between two files through UNIX script

Hi All , As I am new to unix scripting ,I need a help regarding unix scripting .I have two .txt files .One is source file and another is target file.I need a script through which I can compare those two files.I need a automated comparison report in a directory after comparing between source &... (2 Replies)
Discussion started by: STCET22
2 Replies

5. Shell Programming and Scripting

File comparison in UNIX columnwise

Hi all, I want to compare two files with same number of rows and columns with records in same order. Just want to highlight the differences in the column values if any. file A 1,kolkata,19,ab 2,delhi,89,cd 3,bangalore,56,ef file2: 1,kolkata,21,ab 2,mumbai,89,gh 3,bangalore,11,kl... (9 Replies)
Discussion started by: prabhat.diwaker
9 Replies

6. Shell Programming and Scripting

Comparison of two files

Hi all I have two files which I have to compare that whetehr there is soemthing common or not body, div, table, thead, tbody, tfoot, tr, th, td, p { font-family: "Liberation Sans"; font-size: x-small; } body, div, table, thead, tbody, tfoot,... (2 Replies)
Discussion started by: manigrover
2 Replies

7. Shell Programming and Scripting

comparison of 2 files using unix or awk

Hello, I have 2 files and I want them to be compared in a specific fashion file1: A_1200_1250 A_1251_1300 B_1301_1350 B_1351_1400 B_1401_1450 C_1451_1500 and so on... file2: 1210 1305 1260 1295 1400 1500 1450 1495 Now The script should look for "1200" from A_1200_1250 of... (8 Replies)
Discussion started by: Diya123
8 Replies

8. Shell Programming and Scripting

Comparison of two files (sh)

Hi, I have a problem with comparison of two files file1 20100101 20090101 20080101 20071001 20121229 file2 19990112 12 456 7 20011131 19 20100101 2 567 1 987 17890709 123 555 and, sh script needs to compare of these two files and give out to me result: 20100101 2 567 1 987 it... (5 Replies)
Discussion started by: shizik
5 Replies

9. Shell Programming and Scripting

comparison of 2 files

Kindly help on follows. I have 2 files. One file contains only one column of mobile numbers. And total records in a file 12 million. Second file contains 2 columns mobile numbers and balance. and total records 30 million. I want to find out balance of each data in file 1 corresponding to file 2.... (2 Replies)
Discussion started by: kamal_418
2 Replies

10. UNIX for Dummies Questions & Answers

Unix comparison

I am very new to Unix. What are the similiarities and differences between ScoUnix and AIX5 if any? Where might i find the information? Which is better? (1 Reply)
Discussion started by: NewGuy100
1 Replies
Login or Register to Ask a Question