我的 Perl 中有两个数组 我想从另一个数组中 grep 一个数组,我在 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 元素,输出应该是这样的:
globscr online
globscr online
globscr online
globscr online
globscr online
而且我不想使用任何系统命令。请在这里帮助我
最佳答案
您没有删除换行符,因此您的匹配在其查找的内容中包含换行符。
您还需要使 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起什么作用呢?
关于arrays - 从 perl 中的其他数组中 grep 一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21084726/