こんにちは専門家と親切なヘルパー、
私は Perl を初めて使用するので、ここでいくつかのヘルプを使用できます。1000 行を超える CSV ファイルを扱っていますが、ここの例で問題を複製して単純化しました。
基本的に、天気に基づいて、または行の2番目の列が繰り返されないように、いくつかの行を削除したいと思います。これは紛らわしいかもしれませんが、例を挙げて説明させてください。
入力データ:
M,100,John,10
M,98,Mike,9
F,99,Amelia,9
F,100,Rosana,10
F,100,Susan,11
M,99,James,8
期待される出力:
M,100,John,10
F,100,Rosana,10
F,100,Susan,11
F,99,Amelia,9
M,99,James,8
上記の例では、Mike だけが自分のスコア (2 列目の 98) を残りの生徒と共有していないため、彼の名前は印刷されません。つまり、特定のエントリの 2 列目の値が一意であり、他のエントリで繰り返されていない場合は、除外する必要があります。並べ替えはオプションです。
これは私がこれまでに持っているものです。
use Text::CSV;
use strict;
my $csv = Text::CSV->new();
my $sheet;
while( <DATA> ) {
chomp;
my $row;
@$row = split( /,/, $_ );
push @$sheet, $row;
}
@$sheet = sort { $b->[1] <=> $a->[1] } @$sheet;
foreach my $row ( @$sheet ) {
print join( ',', @$row), "\n";
}
__DATA__
M,100,John,10
M,98,Mike,9
F,99,Amelia,9
F,100,Rosana,10
F,100,Susan,11
M,99,James,8
どこから始めればよいかさえわかりません。ヘルプ/提案は大歓迎です。