in reply to removing blank lines from files

perl -i.bak -ne 'print unless /^\s*$/' file

--
Steve Marvell

Replies are listed 'Best First'.
Re^2: Removing Blank Lines From a File
by tadman (Prior) on Jun 20, 2002 at 14:02 UTC
    To shorten your logic a bit:
    perl -ni.bak -e 'print if /\S/' file1 file2 ...
    In other words, "print if there is non-whitespace" versus "print unless composed of only whitespace".

      Update:To the benefit of speed too:

      #!/usr/bin/perl -w use strict; use Benchmark qw(timethese); my @data = ("sponge\n","\n", "wibble\n","boing\n", "spam\n","\n"," spud\n"); my $nsre = qr/\S/; my $isre = qr/^\s+$/; timethese(1E6, { 'nospace' => sub { grep {/$nsre/} @data; }, 'isspace' => sub { grep {!/$isre/} @data; }})

      Resulting in:

      Benchmark: timing 1000000 iterations of isspace, nospace... isspace: 67 wallclock secs (56.34 usr + 0.15 sys = 56.49 CPU) @ 17 +702.25/s (n=1000000) nospace: 63 wallclock secs (49.19 usr + 0.26 sys = 49.45 CPU) @ 20 +222.45/s (n=1000000)

      Unless my dataset is unfair.

      --
      ¤ Steve Marvell

        If you're talking about quarter mile times (i.e. Perl Drag Racing), then the only way to fly is:
        perl -ni -e 'print if length > 1' file1 file2 ...
        Of course, this '1' might be '2' if your platform uses CRLF instead of LF or CR alone. You people know who you are.