我有大约10-20K的记录,只需要某些城市。我想在perl中完成这项工作,但我似乎无法找到我需要的一个例子。 searchme.csv和list.csv如果找到城市删除记录/行。我正在对屏幕进行排序和分割,但现在只有很多方法可以选择。请任何帮助将不胜感激。我只是一个nueb。
答案 0 :(得分:0)
我无法从你上次发表的评论中说出你是否还在努力。无论如何,这是一个需要考虑的解决方案。
use strict;
use warnings FATAL => 'all';
use autodie qw(:all);
# slurp files into arrays
open my $RECORDSFILE, '<', 'searchme.csv';
my @records = <$RECORDSFILE>;
close $RECORDSFILE;
open my $LISTFILE, '<', 'list.csv';
my @citychecklist = <$LISTFILE>;
close $LISTFILE;
open my $NEWFILE, '>>', 'new.csv';
my $cityidx = 2;
my $item;
my $record;
# loop through each record and extract the city string
foreach $record (@records) {
my @data = split qr/,/, $record;
my $city = $data[$cityidx];
# skip the header
next if $city eq 'city';
# compare the city string with each city in our other list
foreach $item (@citychecklist) {
chomp $item;
# if we find a match write out the record to another file
if ($city eq $item) {
print {$NEWFILE} $record;
}
}
}
close $NEWFILE;