Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

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:
patterns.txt

A[0] C D
infile.txt
A[0] B C D[0] D1 DA
brut.pl
#!/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 brut.pl 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


Comment on Re^5: Search and delete lines based on string matching
Select or Download Code
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?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://604576]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (12)
As of 2014-10-21 10:30 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (100 votes), past polls