Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Re^5: Search and delete lines based on string matching

by imp (Priest)
on Mar 13, 2007 at 15:33 UTC ( #604576=note: print w/replies, xml ) Need Help??

in reply to Re^4: Search and delete lines based on string matching
in thread Search and delete lines based on string matching

It seems to work for me, unless I misunderstood your specs. Here are the files I am using:
A[0] C D
A[0] B C D[0] D1 DA
#!/usr/local/bin/perl use strict; use warnings; if (@ARGV != 3) { print "Usage: $0 <pattern file> <input file> <output file>\n"; exit; } my ($pattern_filename, $source_filename, $dest_filename) = @ARGV; open my $pattern_fh, '<', $pattern_filename or die "Failed to open $pa +ttern_filename: $!"; my @tokens = (); while (my $line = <$pattern_fh>) { chomp $line; push @tokens, quotemeta($line); } my $pattern = '^(?:' . join('|', @tokens) . ')[^a-zA-Z]*$'; print "Search pattern: $pattern\n"; open my $infile, "<", $source_filename or die "Failed to open $source +_filename: $!"; open my $outfile,">>", $dest_filename or die "Failed to open $dest_f +ilename: $!"; while(my $line = <$infile>) { print "input : $line"; if ($line =~ /$pattern/) { next; } print "output: $line"; print $outfile $line; } close($infile); close($outfile);
perl patterns.txt infile.txt outfile.txt
Search pattern: ^(?:A\[0\]|C|D)[^a-zA-Z]*$ input : A[0] input : B output: B input : C input : D[0] input : D1 input : DA output: DA

Replies are listed 'Best First'.
Re^6: Search and delete lines based on string matching
by brut (Initiate) on Mar 13, 2007 at 15:47 UTC
    Yes it's fine except for the output should also have D[0] D1 DA as I need exact matching i.e. only D in input will not delete D1 and D +A from output. And in the addition code, if I dont want the new outfile to be sorted. +And it's a simple appending the strings whatever they be without any +string matching of file B with file A. So in the addition requirement if A contains B C F[0] and B contains D[0] E output should be D[0] E B C F[0]

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://604576]
Corion waves to virtualsue
[virtualsue]: I have made a post for the first time in ... years
[marto]: hey virtualsue!
Eily thought about Neko Case first, something might be wrong with my brain's wiring
[virtualsue]: I recommended dbic-migration even though I am having trouble with it this week. It might be my fault.
[ambrus]: wow! I haven't seen you here for a long time, virtualsue
virtualsue waves back
[Eily]: it would have been 2 years in 2 weeks actually. And welcome back virtualsue :)
[Corion]: I think I saw virtualsue more recently in person than online :-D
[virtualsue]: It's true that there was a bigger gap between the 2 yr old post and the one before it

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (15)
As of 2017-09-26 13:47 GMT
Find Nodes?
    Voting Booth?
    During the recent solar eclipse, I:

    Results (295 votes). Check out past polls.