The UNIX and Linux Forums  


Go Back   The UNIX and Linux Forums > Top Forums > Shell Programming and Scripting
.
google unix.com




View Single Post in the UNIX and Linux Forums - Click on the Thread or Permalink to View Entire Thread -->
  #3 (permalink)  
Old 09-16-2004
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Location: Ashburn, Virginia
Posts: 9,131
In case you want to get the ksh script running, I'll comment on that. In your first try you were moving toward a solution where you repeatedly scanned a file. Don't do that. You want to read each file once. I think something like this will work:

Code:
i=0
exec < file1
while read array[i] ; do
      ((i=i+1))
done
exec <file2
while read entry ; do
      i=0
      found=0
      while ((i<${#array[@]})) ; do
            if [[ $entry = ${array[i]} ]] ; then
                 found=1
                 break
                 ((i=i+1))
            fi
      done
      if ((found)) ; then
            echo $entry is in file1
      else
            echo $entry is not in file1
      fi
done

You might get away with something like:
set -A array $(cat file1)
but the resulting set statement must be less than the max line length. It might work at first, then fail later. The loop seems a bit safer. And it fires up a cat process. So the loop will be a bit faster too.