Вам не нужно запускать egrep несколько раз ... вы можете просто сделать это с одним egrep или, что еще лучше, сделать это за пару строк Perl.
Вам просто нужно open
файл, используя полный путь, а затем для каждой строки в файле (читайте, используя <$fh>
), вы можете использовать регулярное выражение, чтобы найти строки, которые соответствуют, и print
их для ваш выходной файл.
open(my $output,">","/nfs/pais/abh/pgm4.txt") || die;
if(open(my $fh,"<","/net/abc/$file"))
{
while(<$fh>)
{
if( /Nonemu|EMULATION|INTEL_EMULATION/)
{
print $output $_;
}
}
close($fh);
}
Также не рекомендуется использовать chdir
подобным образом, так как сначала предполагается, что вы находитесь в правильном начальном каталоге, но это также не «отменяет» изменение каталога, поэтому не сможет работать на следующем подкаталог.
Если вы хотите пересечь несколько слоев подкаталогов, вам нужно написать рекурсивную подпрограмму (подпрограмму).