以CSV格式搜索值

时间:2013-01-23 07:29:25

标签: perl unix

我有csv文件和值。我想搜索这个值是否有CSV格式。你能帮忙告诉哪些代码可以用来打开CSV文件,然后找到 值是否以CSV格式提供

4 个答案:

答案 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