String 如何提取与字符串和下一行匹配的行?
我有两个文件,即String 如何提取与字符串和下一行匹配的行?,string,perl,text-extraction,String,Perl,Text Extraction,我有两个文件,即a.txt和b.txt。我的任务是在b.txt中搜索a.txt的所有字符串。如果a.txt和b.txt的字符串之间有任何匹配,那么我想打印与该字符串对应的行以及文件b.txt中的下一行 我一直在尝试下面提到的代码,但问题是它没有打印任何内容。你能给我指出问题并提出解决办法吗 open fh, "<", "b.txt" or die $!; open fh1, "<", "a.txt" or die $!; my $array1 = < fh>; my
a.txt
和b.txt
。我的任务是在b.txt
中搜索a.txt
的所有字符串。如果a.txt
和b.txt
的字符串之间有任何匹配,那么我想打印与该字符串对应的行以及文件b.txt
中的下一行
我一直在尝试下面提到的代码,但问题是它没有打印任何内容。你能给我指出问题并提出解决办法吗
open fh, "<", "b.txt" or die $!;
open fh1, "<", "a.txt" or die $!;
my $array1 = < fh>;
my $array2 = < fh1>;
while (my $array1 = < fh>) {
if ($array1 =~ m/$array2/i) {
print $array1;
print scalar < fh>;
}
}
openfh,“试试这样的方法
open fh, "<", "b.txt" or die $!;
open fh1, "<", "a.txt" or die $!;
while(my $item1 = <fh>)
{
while(my $item2 = <fh1>)
{
if($item1 =~ m/$item2/i)
{
print $item1;
print <fh>;
}
}
seek fh1, 0, 0;
}
close fh;
close fh1;
打开fh,“我可以帮你得到两个元素数组,我不知道你想如何打印匹配的元素和下一个元素
use Data::Dumper;
open(FH, "<$file") or die "$!";
open(FH1, "<$file1") or die "$!";
my @array1 ;
my @array2 ;
while(<FH>) {
chomp($_);
push @array1,$_;
}
while(<FH1>) {
chomp($_);
push @array2,$_;
}
close(FH);
close(FH1);
print Dumper(@array1);
print Dumper(@array2);
使用数据::转储程序;
开放(FH),以下是显而易见的:
use strict;
use warnings;
my $line1;
my $line2;
my $fh;
my $fh1;
my $counter;
open $fh, "<", "b.txt" or die $!;
open $fh1, "<", "a.txt" or die $!;
my @b = <$fh>;
my @a = <$fh1>;
for (@b)
{
$line1 = $_;
for (@a)
{
$line2 = $_;
if ($line1 =~ /^$line2$/)
{
$counter++;
open $outfile, ">", "a_${counter}.txt";
print $outfile $line2;
close $outfile;
}
}
}
使用严格;
使用警告;
我的$line1;
我的$line2;
我的$fh;
我的$fh1;
我的美元柜台;
打开$fh,“,”a_${counter}.txt“;
打印$outfile$line2;
关闭$outfile;
}
}
}
我不太明白的是,你想用标量做什么?非常感谢BSen,它可以工作,但一旦搜索了a.txt的第一个元素,我想将匹配的数据打印到另一个文件中。即,在a1.txt中搜索第一个元素,在a2.txt中搜索第二个元素,等等。目前在你的帮助下,我可以将所有元素保存在一个文件中。你能帮我修改你给出的代码,完成我在上面的评论中提到的任务吗?如果我确实理解你想要什么,那么在循环之外添加一个变量,在每次匹配时递增它,并打开新文件的句柄(使用变量来形成名称,例如a1,a2…)然后写入并关闭它这是我用u建议的代码尝试的…**打开fh,“>”,“c$i.txt";**i++;**print;**}**}**seek fh1,0,0;**}****close fh;**close fh1;**close fh2;这不起作用..所以你能建议我怎么做吗?不知道你想打印到文件中的是什么,但请尝试一下,非常感谢你的帮助。它只在已搜索a.txt我想将匹配的数据打印到另一个文件中。例如,在a1.txt中搜索第一个元素,在a2.txt中搜索第二个元素,等等。目前在您的帮助下,我可以在一个文件中保存所有元素,这是否意味着您将拥有与匹配数相同的文件?非常感谢您的快速响应,。。。。。是的,我将拥有与匹配数相同的文件。如果我在a.txt中有n个元素,那么将在b.txt中搜索这些n个元素,如果找到所有n个元素的匹配,那么它们将是n个文件。在我的情况下,数字可能在7-10个元素之间变化,因此是7-10个文件。启动计数器,每次获得匹配时,递增计数器,op使用计数器作为文件名的一部分来生成文件打开我的$outfile,“>”,“a${counter}.txt”
,然后写入并关闭它。这是我想做的,但我无法打印任何文件或生成您提到的任何文件。目前我无法解决问题,我正在尝试解决它。