我有 csv 文件和一个值。我想搜索这个值是否存在于 CSV 中。能否请您帮忙并告诉哪些代码可用于打开 CSV 文件,然后查找值是否在 CSV 中可用
问问题
1225 次
4 回答
4
perl -lne 'if(/"your_value"/){print;exit}' your_csv_file
你为什么不简单地使用 grep 一个命令行这样的:
grep 'your_value' your_csv_file
于 2013-01-23T09:34:57.950 回答
1
如果你可以安装 CPAN 模块,试试这个:DBD::CSV,你可以像处理关系数据库一样处理你的文件,通过 DBI 的 SQL 接口查询。
于 2013-01-23T09:55:43.353 回答
0
如果您可以将您的价值放在正则表达式中,我认为这应该可行:
perl -p -e 'unless (m/,valueToSearchAsRegex,/) {$_=""}' filename
它将打印文件文件名中具有该值的所有行。
否则,如果您想在使用 Text::CSV 的 perl 程序中执行此操作,您可以尝试:
my $csv = Text::CSV->new();
open my $io, "<", $file or die "$file: $!";
my $found = 0;
while (my $row = $csv->getline ($io)) {
my @fields = @$row;
for my $field (@fields) {
if ($field =~ m/valueToSearchAsRegex/) {
$found = 1;
}
}
}
于 2013-01-23T08:45:00.187 回答
0
我认为这就是你想要的:
#!/usr/bin/perl -w
use strict;
my $value = 'val6';
my @array = <DATA>;
foreach my $a (@array)
{
my @array2 = split (/,/, $a);
foreach my $b (@array2)
{
if ( $b eq $value )
{
print "Given Value is available in hte CSV\n";
}
}
}
__DATA__
val1,val2,val3,val4
val5,val6,val7,val7
输出:
Given Value is available in hte CSV
如果您的 csv 文件很大,请确保不要将 csv 读入数组。改用带有 while 循环的文件句柄。
这是另一个镜头grep
#!/usr/bin/perl -w
use strict;
my $value = 'val5';
my @array = <DATA>;
my $out = grep { /$value/ } @array;
if ($out)
{
print "Given value is present in the CSV\n";
}
else
{
print "Given value is not present in the CSV\n";
}
__DATA__
val1,val2,val3,val4
val5,val6,val7,val7
输出:
Given value is present in the CSV
于 2013-01-23T09:22:43.823 回答