別のファイルからファイル内の単語をgrepしたいと思います。私のコードはファイルの最後の行に単語をgrepできますが、その前の単語はgrepできません。私は理由と希望がここで助けを得ることができないのか分かりません。以下は、perlスクリプト私が使用している:ファイルからgrepする方法
open(FILE1,"file1.txt") or die "Error, File1 could not open\n";
open(FILE2,"file2.txt") or die "Error, File2 could not open\n";
open(FILE3, ">file3.txt") or die "Error, File3 could not open\n";
use strict;
use warnings;
use List::MoreUtils qw(uniq);
my @file1=<FILE1>;
my @file2=<FILE2>;
my $j =0;
my $i =0;
my $zone =0;
for ($j=0; $j<=$#file2; $j++){
$zone = $file2[$j];
unless ($zone =~ m/#(.*?)/) {
print "$zone";
my @fid = grep /$zone/ , @file1;
@fid = uniq(@fid);
s{^\s+|\s+$}{}g foreach @fid; #cancel leading space
for ($i=0; $i<=$#fid; $i++){
print FILE3 "$fid[$i]\n";
}
#@fid=();
}
}
close(FILE3);
マイFILE1.TXTはこのようなものです:
i am a dog
i am a cat
we are the fish
he is a boy
she is a girl
私FILE2.TXTは、このようなものです:
is
am
しかし、私のファイル3缶それらの文が含まれていることを示しているだけですが、私は2行目に入れて、最初の行にあると私のファイル3は文章のみを含んでいます。なぜ私のコードが私のファイルの最後の行だけをgrepすることができるのかよく分かりません2。助けてくれてありがとう。
感謝!! – tim