Solved

Search and Compare between 2 Files and writing the results into another file.

Posted on 2008-10-02
1
275 Views
Last Modified: 2013-11-17
Hello,

I have 2 files. Both of these files have XML formats.

First File has Single Line XML Requests and second file has single line XML OutPuts.

Every Request Line has an ID associated to it and the corresponding response will have the same ID in it.

Now the problem is to separate those request lines from the Request File which has no corresponding success response in the Response File.

There fields in the XML which have ID And Status Information in the same line.  

<Id>123</ID> ...... <Status>Success</Status>

what this means is, For every Line in Request File, There will be a ID Filed, whose value will uniquely identify that request. This Id needs to be searched in the Response File, If I find that ID, in the same Line I should Find the <Status>Success</Status>.

If I do not find the Id at all in the Response File or After finding the Id, the <Status>Success</Status> is not found in the same line, then the Corresponding Line from the REQUEST FILE need to be copied into a FailedRequestsFile.

So I hope the description I gave explains that this is all about filtering the requests which failed to retuning a response at all or returned a Fail response. so that we can reprocess them.

thank you.
0
Comment
Question by:objectkk
1 Comment
 
LVL 39

Accepted Solution

by:
Adam314 earned 500 total points
ID: 22626364
It would help if you posted both XML files... but going on your description so far

open(my $in, "<response_file_here.txt") or die "Could not open response: $!\n";

my %Res;

while(<$in>) {

	next unless m|<id>(\d+).*<Status>(.*?)</Status>|;

	$Res{$1} = $2;

}

close($in);
 
 

open($in, "<request_file_here.txt") or die "Could not open requests: $!\n";

open(my $out, ">failed_requests.txt") or die "Could not open failed requests: $!\n";

while(<$in>) {

	next unless /<id>(\d+)/;

	print $out $_ unless($Res{$1} and $Res{$1} eq 'Success');

}

close($out);

close($in);

Open in new window

0

Featured Post

Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
SSH commands for Nas4free 21 300
FTP on FreeBSD server 2 90
How to Change Interface on Cisco IOU 11 74
MarkLogic 1 48
When you do backups in the Solaris Operating System, the file system must be inactive. Otherwise, the output may be inconsistent. A file system is inactive when it's unmounted or it's write-locked by the operating system. Although the fssnap utility…
Checking the Alert Log in AWS RDS Oracle can be a pain through their user interface.  I made a script to download the Alert Log, look for errors, and email me the trace files.  In this article I'll describe what I did and share my script.
Learn how to get help with Linux/Unix bash shell commands. Use help to read help documents for built in bash shell commands.: Use man to interface with the online reference manuals for shell commands.: Use man to search man pages for unknown command…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…

708 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now