имеется много файлов, находимых по паттерну, в которых нужно найти строки, содержащие подстроку А и расположенные между строками, содержащими подстроки B и С. ответ должен обязательно содержать file name + line number, копия строки тоже желательна. какой тул поможет мне это сделать с минимальным геморроем?
(no subject)
Date: 2003-06-11 01:54 pm (UTC)как теперь его напустить на все файлы, удовлетворяющие маске, включая подкаталоги?
(no subject)
Date: 2003-06-11 02:49 pm (UTC)#!/usr/bin/perl use strict; traverse(@ARGV); sub traverse($$){ my ($path,$pattern)=@_; for my $file (glob("$path/*")){ if (-d $file){ traverse($file,$pattern); } elsif ($file =~ /$pattern/){ process($file); } } } sub process($) { my $file = shift; open(IN,$file) or die $!; my ($between,$line,$msg); for my $string (<IN>){ $line++; $between = 1 if ($string =~ /B/); if ($string =~ /C/){ print $msg; $msg=''; $between=0; } $msg.="$file:$line $string" if ($between && $string =~ /A/); } close(IN); }