【发布时间】:2020-05-25 23:40:23
【问题描述】:
我有一个包含元素列表的数组 (@array)。我需要检查这些每个元素是否存在于主文件中。如果元素存在于主文件中,那么在主文件的同一行中,字符串YES(在第 5 位)也应该存在。并且元素应该存储在不同的数组中。
实际上我的脚本使用两个grep shell 命令来实现这一点。我怎样才能在 Perl do grep 中写同样的东西。
...
use Data::Dumper;
my @new_array;
my @array = ('RT0AC1', 'WG3RA3');
print Dumper(\@array);
foreach ( @array ){
my $line = `grep $_ "master_file.csv" | grep -i yes`;
next unless($line);
push( @new_array, $_ );
}
print Dumper(@new_array);
...
master_file.csv 如下所示:
101,RT0AC1,CONNECTED,FAULTY,NO
102,RT0AC1,CONNECTED,WORKING,YES
103,RT0AC1,NOT CONNECTED,WORKING,NO
104,WG3RA3,NOT CONNECTED,DISABLED,NO
105,WG3RA3,CONNECTED,WORKING,NO
所以在这里我将$line 值作为102,RT0AC1,CONNECTED,WORKING,YES 和元素RT0AC1 存储在@new_array 中。
如何避免使用反引号(`)和两个 grep 来实现这一点。我正在尝试使用纯 Perl 来做到这一点。 master_file.csv 还包含数百万条记录。
【问题讨论】:
-
你要找的词总是在 csv 文件的第二列吗?
-
@Shawn 是的。
标签: perl