
perl中grep的对象可以为变量吗 正确方法是怎样?我的详细问题与脚本是这样的
我有一个文件1,假设里面内容为刘德华张学友周星星文件2假设它里面内容为:房间大量框架梁1111facasffaljdsalfljdsaldfasfafadfadfdsa周...
我有一个文件1,假设里面内容为
刘德华
张学友
周星星
文件2 假设它里面内容为:
房间大量框架梁 1111 fa casf
faljdsal fljdsal dfas fa
fad fad fdsa 周星星
房道龙框架梁 刘德华 1111
张学友 dfdsa发 vaf
我想在文件2中找到包含文件1的信息,放在文件3,期望的结果是:
fad fad fdsa 周星星
房道龙框架梁 刘德华 1111
张学友 dfdsa发 vaf
但是我按网上的方法 无论如何修改grep的用法 得到的文件3要不与文件2一样 要不就变成一个非常大的文件。 解决这个问题方法很多,但是我想知道grep如何使用变量来选取。谢谢了 展开
刘德华
张学友
周星星
文件2 假设它里面内容为:
房间大量框架梁 1111 fa casf
faljdsal fljdsal dfas fa
fad fad fdsa 周星星
房道龙框架梁 刘德华 1111
张学友 dfdsa发 vaf
我想在文件2中找到包含文件1的信息,放在文件3,期望的结果是:
fad fad fdsa 周星星
房道龙框架梁 刘德华 1111
张学友 dfdsa发 vaf
但是我按网上的方法 无论如何修改grep的用法 得到的文件3要不与文件2一样 要不就变成一个非常大的文件。 解决这个问题方法很多,但是我想知道grep如何使用变量来选取。谢谢了 展开
1个回答
展开全部
问题应该是出在while (<A>) 这里。
这句是把文件中每一行取出来,赋给系统变量$_,而$_这个变量是很特殊的,perl中好多的功能都会用到这个,所以可能会带来不可知的后果,我们应该尽量避免使用$_。
另外,<B>这个不能多次使用,除非你使用seek重置文件指针,不然的话,第一次执行完了,第二次里面的值就是空了。
可以改成:
my @b = <B>;
foreach my $line (<A>) {
chomp($line);
next if (!$line);
@a = grep (/$line/, @b);
print C @a;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询