in reply to Grab 3 lines before and 2 after each regex hit
This is a fairly primitive way to do it:
#!/usr/bin/perl -w use strict; my @lines = <DATA>; for(1..$#lines) { if($lines[$_]=~m/[^\d]+\d+/){ print qq~ $lines[$_-3] $lines[$_-2] $lines[$_-1] $lines[$_] $lines[$_+1] $lines[$_+2] ~; } } 1; __END__ alpha beta something a07607 b-alpha b-beta b-something b-something else c-alpha c-beta c-somethin a9706 d-alpha d-beta d-something d-something else
produces...
alpha beta something a07607 b-alpha b-beta c-alpha c-beta c-somethin a9706 d-alpha d-beta
Celebrate Intellectual Diversity
|
---|