in reply to Re: delete a line by a string
in thread delete a line by a string

Hi. Thank for the quick response. I wanted to know if you can give me the code as a part of a script and not as a stand alone command Thanks Ahead

Replies are listed 'Best First'.
Re: Re: Re: delete a line by a string
by broquaint (Abbot) on Apr 02, 2003 at 15:07 UTC
    Assuming your file isn't too big (i.e will comfortably fit in memory)
    open(my $fh, "<+", "your_file") or die("ack: $!"); my @data = <$fh>; seek $fh, 0, 0; my $newsize = 0; for(@data) { next unless /\bsome string\b/; print $fh; $newsize += length; } truncate $fh, $newsize; close $fh;
    Or if the file is too big to be read entirely into memory
    open(my $read, "<", "your_file") or die("ack: $!"); open(my $write, ">", "tmpfile$$") or die("ack: $!"); while(<$read>) { next unless /\b some string\b/; print $write; } close $read; close $write; rename $write, $read;
    See. perlopentut and perlfunc for more info.
    HTH

    _________
    broquaint

Re: Re: Re: delete a line by a string
by diotalevi (Canon) on Apr 02, 2003 at 14:47 UTC
    while (my $line = readline STDIN) { # If the line matches the expression then skip the line. # Note the use of /x if ( $line =~ /\b word \b/x ) { # Skip to the the next iteration next; } print $line; }
Re: Re: Re: delete a line by a string
by pfaut (Priest) on Apr 02, 2003 at 14:49 UTC

    Save the code below to x.pl. Invoke with 'perl x.pl <filename>...'.

    #!/usr/bin/perl -i -n print unless /\bsome string\b/;
    90% of every Perl application is already written.
    dragonchild