arrays - 从 perl 中的其他数组中 grep 一个数组

标签 arrays linux perl grep

我的 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/

相关文章:

ruby : Generate a Hash of Hashes from an Array of Hashes

javascript - 无法发布对象的 javascript 数组

php - 查找总和等于某个 'K' 的不同数字对的数量 - PHP

ruby - 这些 Array Initializations 中的哪个在 Ruby 中更好?

linux - ssh 退出终端后没有到主机的路由

linux - 为什么有一个 “integer expression expected” ?

linux - 如何删除文件中的重复出现?

mysql - Perl DBI DBD::mysql 从 mysql 服务器获取数据库名称

mysql - 错误 DBD::mysql::db do failed: 调用 native 函数时参数计数不正确 'INET_ATON'

linux - 使用 perl 在电子邮件正文中嵌入 excel 图表