compare 2 files


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting compare 2 files
# 1  
Old 08-29-2010
compare 2 files

i have a problem to compare 2 file, please see my cases;

i have 2 case,
1. compare 2 file
file1 :
Code:
s02s-01  mig_ver03_dtr    TIME 863.000  1714.500  1.000    1704.000  1704 1704
s02s-01  pstm_ver03_dtr  TIME 863.000 1714.500   1.000    1704.000  1704 1704
s02s-02  mig_ver03_dtr    TIME 1005.000   1944.500  1.000  1880.000   1880 1880
s02s-02  pstm_ver03_dtr   TIME 1005.000  1944.500  1.000  1880.000    1880 1880
s02s-03  mig_ver03_dtr   TIME 993.000   1944.500    1.000    1904.000   1904 1904
s02s-03  pstm_ver03_dtr  TIME 993.000  1944.500   1.000   1904.000     1904 1904
s02s-04   mig_ver03_dtr   TIME 983.000  1727.500  1.000  1490.000   1490 1490
s02s-04  pstm_ver03_dtr  TIME 983.000   1727.500 1.000   1490.000  1490 1490
s02s-05    mig_ver03_dtr    TIME 887.000  1778.500  1.000  1784.000  1784 1784
s02s-05   pstm_ver03_dtr TIME 887.000  1778.500 1.000   1784.000   1784 1784

file2 :
Code:
s02s-04
s02s-05
s02s-06
s02s-07
s02s-08
s02s-09

the result should
file3 :
Code:
s02s-04 = mig_ver03_dtr,  pstm_ver03_dtr
s02s-05 = mig_ver03_dtr, pstm_ver03_dtr
s02s-06 = do not have segy
s02s-07 = do not have segy
s02s-08 = do not have segy
s02s-09 = do not have segy

Case 2

input file;
Code:
1015    6   1580
1015   36   1645
1015   66   1730
1015   96   1815
1015  126   1900
1015  156   1979
1015  186   2022
1015  216   2047
1015  246   2073
1015  276   2098
1035  216   2011
1035  246   2051
1035  276   2090
1035  306   2130
1035  336   2167
1035  366   2191
1035  396   2210
1035  426   2229
1035  456   2249
1055    6   1628
1055   36   1636
1055   66   1688
1055   96   1758
1055  126   1828
1055  156   1898
1055  186   1954
1055  216   1988
1055  246   2021
1055  276   2053
1055  306   2085
1055  336   2116

the result should be
Code:
      xxxxx  1015
6       1580
36     1645
66     1730
96     1815
126   1900
156   1979
186   2022
216   2047
246   2073
276   2098
      xxxxx  1035
216   2011
246   2051
276   2090
306   2130
336   2167
366   2191
396   2210
426   2229
456   2249
      xxxxx  1055
6      1628
36    1636
66    1688
96    1758
126   1828
156   1898
186   1954
216   1988
246   2021
276   2053
306   2085
336   2116

does anybody can help me?? thank you very much

Last edited by Scott; 08-29-2010 at 10:52 AM.. Reason: Removed email address; added code tags
# 2  
Old 08-29-2010
Hi
Code:
# awk 'NR==FNR{if(a[$1])a[$1]=a[$1]","$2;else a[$1]=$2;next;}{print $0, (a[$1])?a[$1]:"do not have segey"}' file1 file2
s02s-04 mig_ver03_dtr,pstm_ver03_dtr
s02s-05 mig_ver03_dtr,pstm_ver03_dtr
s02s-06 do not have segey
s02s-07 do not have segey
s02s-08 do not have segey
s02s-09 do not have segey
#

Guru.

---------- Post updated at 09:27 AM ---------- Previous update was at 09:18 AM ----------

Hi
For the second one:

Code:
# awk '{if($1!=p){print "\txxxxx",$1;p=$1}else{print $2, $3;}}' file1
        xxxxx 1015
36 1645
66 1730
96 1815
126 1900
156 1979
186 2022
216 2047
246 2073
276 2098
        xxxxx 1035
246 2051
276 2090
306 2130
336 2167
366 2191
396 2210
426 2229
456 2249
        xxxxx 1055
36 1636
66 1688
96 1758
126 1828
156 1898
186 1954
216 1988
246 2021
276 2053
306 2085
336 2116
#

Guru.
This User Gave Thanks to guruprasadpr For This Post:
# 3  
Old 08-29-2010
MySQL

for first case
Code:
# for i in $(sed "" file2)
  do 
   sed -ne "/$i/N;s/^\([^ ]*\) *\([^ ]*\).*\n[^ ]*\( *[^ ]*\).*$/\1 = \2, \3/p" file1
    if [[ $(sed -n "/$i/p" file1) == "" ]] ; then 
      sed -n "/$i/s/.*/$i = do not have segy/p" file2
    fi 
  done
 
s02s-04 = mig_ver03_dtr,   pstm_ver03_dtr
s02s-05 = mig_ver03_dtr,    pstm_ver03_dtr
s02s-06 = do not have segy
s02s-07 = do not have segy
s02s-08 = do not have segy
s02s-09 = do not have segy

for second case
Code:
# ./justdoit
        xxxxx 1015
    6   1580
   36   1645
   66   1730
   96   1815
  126   1900
  156   1979
  186   2022
  216   2047
  246   2073
  276   2098
        xxxxx 1035
  216   2011
  246   2051
  276   2090
  306   2130
  336   2167
  366   2191
  396   2210
  426   2229
  456   2249
        xxxxx 1055
    6   1628
   36   1636
   66   1688
   96   1758
  126   1828
  156   1898
  186   1954
  216   1988
  246   2021
  276   2053
  306   2085
  336   2116

Code:
 ## justdoit ##
#!/bin/bash
sedarray=( $(sed -e '$d' -e 's/^\([^ ]*\).*/\1/;N;N;N;N;N;N;N;N;N' -e 's/^\([^ ]*\).*\n\1.*/\1/'  infile) )
for ((i=0;i<${#sedarray[@]};i++))
 do
  sed -n "/${sedarray[i]}/,/${sedarray[i+1]}/{;/${sedarray[i+1]}/!p}" infile | sed -e 's/^[^ ]*//' | sed '1i \\txxxxx '${sedarray[i]}' '
 done
  sed -n '/'${sedarray[i-1]}'/,/$/{p}' infile | sed -e 's/^[^ ]*//' | sed '1i \\txxxxx '${sedarray[i-1]}' '

This User Gave Thanks to ygemici For This Post:
# 4  
Old 08-29-2010
For first one:

Code:
awk '
NR==FNR {a[$1]=a[$1] FS $2; next}
{print $1, "=", (a[$1])?a[$1]:"do not have segy"}
' file1 file2

For second one:

Code:
awk '!a[$1] {a[$1]++;print "\txxxxx\t" $1} {print $2 "\t" $3}' infile

This User Gave Thanks to rdcwayx For This Post:
# 5  
Old 08-30-2010
dear all

thanks you very much...

i appreciate all of your answers...
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Compare files and share output from both files

hi all, Thanks to all for your great help... I have a scenario that I have two files (file1 & file2). I need to compare two files entire row by row and share the output if any discrepancies within two files. File1: DB1|TB1|C1,C3 DB2|TB2|C1,C2 DB3|TB3|C1,C2,C3,C4 File2: ... (2 Replies)
Discussion started by: Selva_2507
2 Replies

2. Shell Programming and Scripting

Compare multiple files, and extract items that are common to ALL files only

I have this code awk 'NR==FNR{a=$1;next} a' file1 file2 which does what I need it to do, but for only two files. I want to make it so that I can have multiple files (for example 30) and the code will return only the items that are in every single one of those files and ignore the ones... (7 Replies)
Discussion started by: castrojc
7 Replies

3. Shell Programming and Scripting

Compare two files, then overwrite first file with only that in both files

I want to compare two files, and search for items that are in both. Then override the first file with that containing only elements which were in both files. I imagine something with diff, but not sure. File 1 One Two Three Four Five File 2 One Three Four Six Eight (2 Replies)
Discussion started by: castrojc
2 Replies

4. Shell Programming and Scripting

Compare files

Please help me with awk.I have two files with the below details file1 123456789 2012 987654321 2011 a1234567892012 a1234abcde2012 b1234567892012 c1234567892012 98765a12342012 file2 a1234 01234 b1234 33333 I need to check whether the items in file2 is present in file1 .If it is... (2 Replies)
Discussion started by: Mary James
2 Replies

5. Shell Programming and Scripting

Require compare command to compare 4 files

I have four files, I need to compare these files together. As such i know "sdiff and comm" commands but these commands compare 2 files together. If I use sdiff command then i have to compare each file with other which will increase the codes. Please suggest if you know some commands whcih can... (6 Replies)
Discussion started by: nehashine
6 Replies

6. Shell Programming and Scripting

Compare 2 folders to find several missing files among huge amounts of files.

Hi, all: I've got two folders, say, "folder1" and "folder2". Under each, there are thousands of files. It's quite obvious that there are some files missing in each. I just would like to find them. I believe this can be done by "diff" command. However, if I change the above question a... (1 Reply)
Discussion started by: jiapei100
1 Replies

7. Shell Programming and Scripting

How to compare 2 files & get only few columns based on a condition related to both files?

Hiiiii friends I have 2 files which contains huge data & few lines of it are as shown below File1: b.dat(which has 21 columns) SSR 1976 8 12 13 10 44.00 39.0700 70.7800 7.0 0 0.00 0 2.78 0.00 0.00 0 0.00 2.78 0 NULL ISC 1976 8 12 22 32 37.39 36.2942 70.7338... (6 Replies)
Discussion started by: reva
6 Replies

8. Shell Programming and Scripting

compare files in two directories and output changed files to third directory

I have searched about 30 threads, a load of Google pages and cannot find what I am looking for. I have some of the parts but not the whole. I cannot seem to get the puzzle fit together. I have three folders, two of which contain different versions of multiple files, dist/file1.php dist/file2.php... (4 Replies)
Discussion started by: bkeep
4 Replies

9. Shell Programming and Scripting

compare two files and to remove the matching lines on both the files

I have two files and need to compare the two files and to remove the matching lines from both the files (4 Replies)
Discussion started by: shellscripter
4 Replies

10. Shell Programming and Scripting

compare two files

I have file1 and file2: file1: 11 xxx kksd ... 22 kkk kdsglg... 33 sss kdfjdksa... 44 kdsf dskjfkas ... hh kdkf kdkkd.. jg dkf dfkdk ... ... file2: jg 22 hh ... I need to check each line of file1. if the field one is in file2, I will keep it; if not, the whole line will be... (17 Replies)
Discussion started by: fredao
17 Replies
Login or Register to Ask a Question