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

Re: Checking file for a set of strings

by converter (Priest)
on May 02, 2003 at 23:20 UTC ( #255193=note: print w/ replies, xml ) Need Help??


in reply to Checking file for a set of strings

If you want to do this from the command line, you can pair the code down a little bit with in-place editing (borrowing vladb's sample data for comparison):

#!/usr/bin/perl use warnings; use strict; # note: define the required strings with # the input record separator, so no chomp() # required for comparison my @required = ( "set CMP_DATA_INBND_DIR=C:\\h\\csscs\\data\\commi\\tmp_queue$/", "set CMP_DATA_OUTBND_DIR=C:\\h\\CMP\\data\\outbound$/", "set JAVA_HOME=C:\\h\\COTS\\JAVA2\\1.3$/", "set CSSCS_DATA=C:\\h\\csscs\\data$/", ); my %found; @found{@required} = (0) x @required; # setting $^I defines the filename "extension" # to be appended to the backup copy of the # original file and enables in-place editing: $^I = '.bak'; while (<>) { print; $found{$_}++ if defined $found{$_}; if (eof) { for (@required) { next if $found{$_}; print; } } }

$ cat foo.txt set FOO=BAR set CMP_DATA_INBND_DIR=C:\h\csscs\data\commi\tmp_queue set BAR=FOO set CSSCS_DATA=C:\h\csscs\data $ ./foo.pl foo.txt $ cat foo.txt set FOO=BAR set CMP_DATA_INBND_DIR=C:\h\csscs\data\commi\tmp_queue set BAR=FOO set CSSCS_DATA=C:\h\csscs\data set CMP_DATA_OUTBND_DIR=C:\h\CMP\data\outbound set JAVA_HOME=C:\h\COTS\JAVA2\1.3


Comment on Re: Checking file for a set of strings
Select or Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (6)
As of 2015-07-29 10:51 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (263 votes), past polls