in reply to delete a line by a string

A simple one-liner coming up
perl -i -ne 'print unless /\bsome string\b/' file
See. perlrun for more info on perl's commandline arguments.
HTH

_________
broquaint

Replies are listed 'Best First'.
Re: Re: delete a line by a string
by moked (Beadle) on Apr 02, 2003 at 14:38 UTC
    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
      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

      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; }

      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