Training, Open Source
computer languages


PerlPHPPythonMySQLApache / TomcatTclRubyJavaC and C++LinuxCSS 

Search our site for:
Home Accessibility Courses Diary The Mouth Forum Resources Site Map About Us Contact
a context-revealing grep?

Posted by admin (Graham Ellis), 20 February 2003
Two questions:
1. Can I get grep for windows
2. Is there an option to grep that lets me display a few lines before and a few lines after the match so that I can see matches in context?

Answer:  Here's something (written in Perl) that does it for you - and it will work crossplatform and use Perl's super-extended form of regular expressions!

Code:
#!/usr/bin/perl

$#ARGV < 1 and die ("Usage: $0 regex file [file .. file .. ]\n");
$regex = shift;

foreach $file (@ARGV) {
       open (FH,$file) or warn "Dunno about $file, cobber!\n";
       @content = <FH>;

       for ($k=0; $k<@content; $k++) {
               $gotten = 0;
               if ($content[$k] =~ /$regex/o) {
                       $gotten++ or $#ARGV and
                                       print "*"x20,"in $file\n";
                       print ">>>>>>>>>> Matched from line $k\n";
                       print @content[($k<2?0:$k-2)..$k+2];
                       }
               }
       }


As this isn't a question about the Perl language, but rather an application that happens to be in Perl, I've posted it to the more general information board ....



This page is a thread posted to the opentalk forum at www.opentalk.org.uk and archived here for reference. To jump to the archive index please follow this link.


WELL HOUSE CONSULTANTS LTD.: Well House Manor • 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • FAX: 01144 1225 707126 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho