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