微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从Perl中的其他数组grep一个数组

我在我的Perl中有两个数组,我想从其他数组中的一个数组我的代码在Perl中如下所示。

#!/usr/bin/perl open (han5,"idstatus.txt"); open (han4,"routename.txt"); @array3 = <han4>; @array4 = <han5>; foreach (@array3) { @out = grep(/$_/,@array4); print @out; }

文件routename.txt

strvtran fake globscr

文件idstatus.txt

strvtran online strvtran online strvtran online globscr online globscr online globscr online globscr online globscr online Xtech dead Xtech dead fake online fake online fake connecting walkover123 online walkover123 online

现在我想从idstatus.txt grep globscr元素和输出应该是这样的:

使用veLocity split()将一个string拆分成一个数组似乎不起作用

Windows XP自动将数组初始化为零?

如何在BASH中制作3D数组?

如何将ls命令的输出传递给c ++中的数组

字符数组到LPCTSTR转换c

globscr online globscr online globscr online globscr online globscr online

我不想使用任何系统命令。 请在这里帮助我

在VB.NET中创build一个2Ddynamic数组

使用结构指针来分配数组

如何检查数组中的所有成员是否与unix bash中的某个成员相同

分割错误,没有定义一个未使用的数组

使用variables名创build一个数组bash,unix

你不删除换行符,所以你的匹配包括一个换行符在它正在寻找。

您还需要使for循环使用不同的变量,因为在grep中, $_只会引用当前正在检查的grep列表中的元素。

尝试:

chomp(@array3 = <han4>); @array4 = <han5>; foreach my $routename (@array3) { @out = grep(/$routename/,@array4); print @out; }

这将输出

strvtran online strvtran online strvtran online fake online fake online fake connecting globscr online globscr online globscr online globscr online globscr online

我不知道你想从idstatus.txt grep globscr是什么意思; 那么routename.txt扮演什么角色呢?

不要grep每行,请考虑建立一个正则表达式,其中包含路由名称作为替代:

use strict; use warnings; use autodie; open my $rnameFH,'<','routename.txt'; chomp( my @routename = <$rnameFH> ); close $rnameFH; my $names = '(?:' . ( join '|',map { "Q$_E" } @routename ) . ')'; my $regex = qr /^$names/; open my $idFH,'idstatus.txt'; while(<$idFH>){ print if /$regex/; } close $idFH;

在您的数据集上输出

strvtran online strvtran online strvtran online globscr online globscr online globscr online globscr online globscr online fake online fake online fake connecting

该脚本创建一个OR型的正则表达式,通过join路由名称“|” (打印$names来看看这个)。 这里的map只能引用任何可能在名称中的元字符,例如.*^等,因为这些会影响匹配。

希望这可以帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐