in reply to grep -p ?

Could you explain what grep -p is supposed to do? The GNU implementation of grep doesn't know about -p.

Abigail

Replies are listed 'Best First'.
Re: Re: grep -p ?
by arootbeer (Novice) on Dec 09, 2003 at 17:18 UTC
    in AIX, grep -p will grab the paragraph surrounding a line. for instance, grep -p "lazy" on
    the quick
    red fox
    
    jumped over
    the lazy
    brown dog.
    will return the last 3 lines,
    jumped over
    the lazy
    brown dog.
      Just turn on paragraph mode then.
      #!/usr/bin/perl use strict; use warnings; $/ = ""; # Paragraph mode. while (<DATA>) { print if /lazy/; } __DATA__ the quick red fox jumped over the lazy brown dog. jumped over the lazy brown dog.

      Abigail

        That's what I was looking for, thanks. I went back to the camel and found the $/ variable; I had glanced past it when I was looking for this one. (The explanation there is "If set to the null string, it treats blank lines as delimiters.")

        Thanks again!

      Hmm. Sounds like he should just slurp his file in paragraph mode, or if he has an array, stringify it and slurp it in paragraph mode.

      A one-liner ...

      perl -000 -ne 'print if /lazy/' lazy_file

      See Abigail's non-one-liner too.

      Update: When I wrote

      stringify it and slurp ... in paragraph mode
      I was thinking of perl's new open-and-read-from-a-scalar, but it appears that it doesn't recognize reading in paragraph mode. Is there any way to make this work:

      # assuming @array already exists for some reason $str = join "", @array; open S, "<", \$str or die; $/ = ""; # paragraph mode normally while (<S>) { print if /lazy/; } close S;

      Or is this a bug? (I'm using perl 5.8.0)