我有csv文件和值。我想搜索这个值是否有CSV格式。你能帮忙告诉哪些代码可以用来打开CSV文件,然后找到 值是否以CSV格式提供
答案 0 :(得分:3)
perl -lne 'if(/"your_value"/){print;exit}' your_csv_file
为什么不简单地使用grep one命令行,如:
grep 'your_value' your_csv_file
答案 1 :(得分:1)
如果您可以安装CPAN模块,请尝试以下方法:DBD::CSV,您可以像关系数据库一样处理文件,通过DBI通过SQL接口查询。
答案 2 :(得分:0)
如果你能把你的价值放在正则表达式中,我认为这应该有用:
perl -p -e 'unless (m/,valueToSearchAsRegex,/) {$_=""}' filename
它将打印文件 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;
}
}
}
答案 3 :(得分: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