Comparing two files


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Comparing two files
# 22  
Old 06-10-2008
Sorry, there was a typo in my latest posting; remove the asterisk before the s. Also add an /m modifier to the last substitution, in order for it to work with -0777 (duh).

Code:
perl -0777 -pi~ -e 's/ *\r?\n *~/ ~/g; s/  */ /g; s/:\s*(\d+)\s*(~|$)/: $1 $2/mg' file1.txt file2.txt

I don't find any lines which start with anything other than "Start Time", "End Time", "Row Count", "Table Name", or tilde (optionally with spaces before) in the sample files you posted.

Last edited by era; 06-10-2008 at 05:17 AM.. Reason: No continuations without tilde in the sample data
# 23  
Old 06-10-2008
Correction, I did find three lines which start with a number. Allowing for numbers as well as tilde, try this:

Code:
perl -0777 -pi~ -e 's/ *\r?\n *(~|\d)/ $1/g; s/  */ /g; s/:\s*(\d+)\s*(~|$)/: $1 $2/mg' file1.txt file2.txt

# 24  
Old 06-10-2008
Power Breaking into lines

But still they are not in the same line.If the statistics for the table is huge then it is more than a line.Is this due to the line limit?If so will this be considered as a single line during comparison?
# 25  
Old 06-10-2008
I don't know what you are viewing them with and what exactly you mean with "more than a line". On my screen it looks like this:

Code:
Start Time: Fri Jun 6 02:30:31 PDT 2008
Table Name: AQ$_FT_Q_BECMD_I
Row Count: 0 ~~SUM(SUBSCRIBER#): ~~MAX(SUBSCRIBER#): ~~MIN(SUBSCRIBER#): ~~AVG(S
UBSCRIBER#): ~~LENGTH(NAME): ~~SUM(QUEUE#): ~~MAX(QUEUE#): ~~MIN(QUEUE#): ~~AVG(
QUEUE#): ~~SUM(MSG_STEP_NO): ~~MAX(MSG_STEP_NO): ~~MIN(MSG_STEP_NO): ~~AVG(MSG_S
TEP_NO): ~~SUM(MSG_CHAIN_NO): ~~MAX(MSG_CHAIN_NO): ~~MIN(MSG_CHAIN_NO): ~~AVG(MS
G_CHAIN_NO): ~~SUM(MSG_LOCAL_ORDER_NO): ~~MAX(MSG_LOCAL_ORDER_NO):~~MIN(MSG_LOCA
L_ORDER_NO): ~~AVG(MSG_LOCAL_ORDER_NO):
End Time: Fri Jun 6 02:30:31 PDT 2008

That's a total of four actual lines, wrapped to 80 columns because that's how wide my terminal window is.

Code:
egrep -v '^(Start Time|Table Name|End Time|Row Count):|^^M$|^---' file1.txt

The fact that this command returns nothing suggests that all lines start with one of those four strings, or are empty (notice the literal ctrl-M -- you'd enter that with ctrl-V ctrl-M in many shells), or consist of a line of dashes.
# 26  
Old 06-10-2008
After i ran your script
perl -0777 -pi~ -e 's/ *\r?\n *(~|\d)/ $1/g; s/ */ /g; s/:\s*(\d+)\s*(~|$)/: $1 $2/mg' file1.txt file2.txt
All lines were merged.But when i ran my comparison script which was attached earlier(code.txt file) which had gsub command to replace all the spaces with nothing the output is as seen in the result.txt file attached here.

The original data from both the original files after i ran your script is also attached as file1.txt file2.txt.What happened was few lines were removed off the result file. Why did this happen?

The next problem is the spaces in the input file was not replaced.So the statistics for the tables which had no mismatches were shown in the output file.This is seen in space.txt file attached below

File1.txt

File2.txt

Result.txt

space.txt

Since this happened only i had to introduce gsub to my code.
# 27  
Old 06-10-2008
Lines which start with a minus are still not being merged. Tildes adjacent to a colon apparently still need to be normalized. (I meant to ask about that, but forgot -- sorry.)

Code:
perl -0777 -pi~~ -e 's/:~/: ~/g; s/ *\n *-/ -/g' file1.txt file2.txt

You would run this on top of the commands you ran earlier. This one saves the unedited files into file1.txt~~ and file2.txt~~ which you can probably delete after you've verified that the result looks correct.
# 28  
Old 06-10-2008
perl -0777 -pi~ -e 's/ *\r?\n *(~|\d)/ $1/g; s/ */ /g; s/:\s*(\d+)\s*(~|$)/: $1 $2/mg' file1.txt file2.txt
This is different from what u have given now

perl -0777 -pi~~ -e 's/:~/: ~/g; s/ *\n *-/ -/g' file1.txt file2.txt

Will both these codes do the same?Will the recent one which u sent merge the lines starting with numbers?

I define my input file path to a variable
like
a=/gfd/rte/efe/
b=/dgd/fhf/eeg
and i modify the code to
perl -0777 -pi~ -e 's/ *\r?\n *(~|\d)/ $1/g; s/ */ /g; s/:\s*(\d+)\s*(~|$)/: $1 $2/mg' $a/file1.txt $b/file2.txt
will the resultant file of this code be stored in the same path $a and $b?
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. Shell Programming and Scripting

Comparing the files

Hi Friends, I have file1.txt file2.txt I tried using the diff and comm but not getting the expected output.. I want where exactly the miss match occurs. probably the field. Sourcevalue|Targetvalue|Linenumber|field 29123975|2923975|3|1 Please help. (6 Replies)
Discussion started by: i150371485
6 Replies

4. Shell Programming and Scripting

Help with comparing two files

Hi all I have to compare two file this time one is P11223 x1124 x1145 t5678 e3456 z2345 another file P11223 x s (2 Replies)
Discussion started by: manigrover
2 Replies

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

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

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

8. Shell Programming and Scripting

Need Help Comparing two Files

I really need help on creating a script that does the following: I have one file (File 1) with lines in the following format: Name.maf score1 score2 I have a second file (File 2) with lines in the following format: label start end Name What I need to do is compare File 1 and... (1 Reply)
Discussion started by: awknerd
1 Replies

9. Shell Programming and Scripting

Comparing files

I have a file called X, which contains the following: 10 100 200 300 I then have file Y, which containts the following: 10 200 500 800 I want to write a script that will compare the contents of Y with the contents of X and ONLY return values in Y that does not exist in X (output... (5 Replies)
Discussion started by: soliberus
5 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