Comparing files using a loop


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Comparing files using a loop
# 1  
Old 03-16-2010
Comparing files using a loop

Hi,
I'm trying to compare two files using a loop statement.. So far I've gotten the below but instead of outputting what line number is missing in File1 one, I'd like it to output the actual line that was found..

Can anyone give me some pointers..

Code:
#!/bin/ksh

counter=1
exec 3< File2.txt

while read -u3 line
do
grep "$line" File1.txt 1>/dev/null
if [[ $? -eq 1 ]]
then
print
"Line $counter ain't in the File1.txt file!!!" > Compare_result.txt
fi
(( counter += 1 ))
done

# 2  
Old 03-16-2010
How about this...
Code:
#!/bin/ksh

counter=1
exec 3< File2.txt

while read -u3 line
do
ln=$(grep "$line" File1.txt)
if [[ $? -eq 1 ]]
then
print "Line $counter ain't in the File1.txt file!!!" > Compare_result.txt
else
print $ln
fi
(( counter += 1 ))
done

# 3  
Old 03-16-2010
Hi, tried that but i didn't get the outcome i was looking for...

Basically what I'm trying to do here is compare two folders on two separate servers.. One of the servers is our Production region (file1) and the other is a test region (file2).. I want to compare the rcode directories on both so that we can make sure they are both in sync.. I've tried using the diff command but it to doesn't work the way i want.. I'm aware that there's an rsync command out there but there seems to be some issue using that command with in our network..

I thought the best thing to do would be to ls -lrt the contents of both directories to txt files, move them to the same folder and use a loop command to compare them... I'm not great on scripting so trying to figure this out..

I've created both files and edited them using awk so that they just have the file size and file name contained in each txt file.

I want to check whats in file1 thats not in file2 and output it to another file.. Can anyone suggest how to do this??

Last edited by Jazmania; 03-16-2010 at 09:21 AM..
# 4  
Old 03-16-2010
And when you take the contents of the directory, make ls -1 (one not ele)
Code:
ls -1

Code:
awk 'NR==FNR{a[$0];next}$0 in a{next}1' file2 file1

# 5  
Old 03-16-2010
Ls -1 would not give the file size, just the name.However I think the suggested nawk script would work anyway if file1 and file2 contained just the size and name on each line as suggested by the earlier post.Another way to do this is sort and then diff the files and grep which ever chevron > or < is appropriate from the output.
# 6  
Old 03-16-2010
using perl:-
below code will give you the lines that are exists in file2 and not on file1

Code:
perl -e '@s{`cat file1.txt`}=( ); exists $s{$_} || print for `cat file2.txt` ;'

SmilieSmilieSmilie
# 7  
Old 03-16-2010
I tried the awk command but I'm still getting results that are contained in both files. I had the same thing happen when i tried to use the diff command.. I did try and grep just for < so that it would just give me whats on file1 but i still had results come up that were contained in both files..

The reason i'm only outputting the size and filename is because we might have different permissions on each server for the files, and the owner and group names may also be different, so I don't want these flagging differences.. Each file contains a couple of thousand lines to compare..

I'm trying out using the comm command to see if that works..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Comparing two files and list the difference with common first line content of both files

I have two file as given below which shows the ACL permissions of each file. I need to compare the source file with target file and list down the difference as specified below in required output. Can someone help me on this ? Source File ************* # file: /local/test_1 # owner: own #... (4 Replies)
Discussion started by: sarathy_a35
4 Replies

2. Shell Programming and Scripting

Comparing files in a directory against an array of files

I hope I can explain this correctly. I am using Bash-4.2 for my shell. I have a group of file names held in an array. I want to compare the names in this array against the names of files currently present in a directory. If the file does not exist in the directory, that is not a problem.... (5 Replies)
Discussion started by: BudMan
5 Replies

3. UNIX for Advanced & Expert Users

How to find duplicates contents in a files by comparing other files?

Hi Guys , we have one directory ...in that directory all files will be set on each day.. files must have header ,contents ,footer.. i wants to compare the header,contents,footer ..if its same means display an error message as 'files contents same' (7 Replies)
Discussion started by: Venkatesh1
7 Replies

4. 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

5. Shell Programming and Scripting

Need help comparing two files and deleting some things in those files!

So I have two files: 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 ref4948 1.1 treehouse.txt 1.6 ref8573 1.5 ref3284 1.4 ref5838... (24 Replies)
Discussion started by: linuxkid
24 Replies

6. Shell Programming and Scripting

For loop comparing files!

I am trying to compare 2 files using for loop : file1 : ===== host1 host2 host3 file2: ==== host1 host2 host3 host4 host5 The common occurrence in file1 and file2 is to be written to file3. (3 Replies)
Discussion started by: sriram003
3 Replies

7. Shell Programming and Scripting

comparing 2 files using nested for loop

hi, Am trying to compare to files using the 'for' loop have tried this but keeps going on and on.. #!/bin/bash for i in $(cat $c.sh); do for j in $(cat $d.sh); do if test "$i" != "$j" then echo $i not in $j fi done done have tried this as... (0 Replies)
Discussion started by: vadharah
0 Replies

8. Shell Programming and Scripting

Urgent:Comparing two Strings using If Loop

Hi All, Please help me out in this... I am new to scripting How to compare two strings by using the same string in single loop, I am using ksh for ex:see the code snippet below I am writing in java, Can u guys tell me that in scripting if ("string1"=="string2" ||... (2 Replies)
Discussion started by: Anji
2 Replies

9. Shell Programming and Scripting

Comparing two files...

I searched through the forums, and there are a couple threads that have a similar problem to mine, but they don't seem to exactly address my problem. I'm running an HP-UX box, trying to create a little script that will compare the /etc/passwd file with another file I have created. Each line... (12 Replies)
Discussion started by: paqman
12 Replies

10. UNIX for Advanced & Expert Users

comparing shadow files with real files

Hi I need to compare shadow file sizes with their real file counterparts. If the shadow file size differs form the realfile size then it must send a mail. My problem is that our system has over 1600 shadowfiles in different directories, with different names. the only consistancy is the .sh file... (4 Replies)
Discussion started by: terrym
4 Replies
Login or Register to Ask a Question