Wouldn't 
cat filename | grep -v  "text to ignore"
be simplest?

Agustin

----- Original Message ----- 
From: "Jim Witte" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
Sent: Thursday, November 29, 2001 8:09 AM
Subject: Elegant way to find/remove line from text file


> Hello,
> 
>   I'm updating a script that manages the .htpasswd file on *N*X boxes. 
> The user records are stored on successive lines, in the form
> $username:$password.  What I want to do is find a particular $username,
> then delete the entire line.
> 
>   The current code reads the entire file into an array, then loops
> through every line in the array, incrementing a counter each time.  If
> the $username part of the line matches, splice is used to remove that
> line from the area.  Then the array is written back out to a new file.
> 
>   This seems inelegant to me (there should be some way to do this in two
> or three lines, this is PERL, is it not?), as well as memory-hogging and
> possibly slow (read the ENTIRE file in, even it it's the first user to
> be removed?)
> 
>   What I'd like to do is read in each line, check it, if it doesn't
> match, spit it out to the new file; if it does match, just copy the rest
> of the original file (sans one line) to the new file in one statement
> (blockMove like operation)  Is there a way to do this?
> 
>   Later on, the boss wants the script to display a list of all users and
> allow an interactive deletion utility using forms, which will mean I'll
> have to read everything into an array (or multiple - is there any
> memory/speed advantage to dealing with several small arrays rather than
> one big one - say 20 in each for 20 names per page).  I plan to do all
> this using CGI.pm at least eventually, I may hack something together
> without it until I learn it..
> 
>   Is there a module out there for doing operations with files, like
> deleteing single lines in one call like "$f = open(..); $line =
> ($f->getLine(p); $f->deleteLine($q)" without having to read in in,
> process it, then write it back out?  A Scheme-style MAP command would
> also be very useful.
> 
> Thanks for listening to a lot of questions,
> Jim Witte
> 
> [EMAIL PROTECTED]
> Indiana University
> "Perl Worker Bee", CGI-Factory.com
> 
> -- 
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to