-3

csv ファイルと値があります。この値がCSVにあるかどうかを検索したい。CSVファイルを開くために使用できるコードを教えてください。CSVで値が利用可能かどうかを確認してください。

4

4 に答える 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

値を持つファイル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 に答える