入力ファイル(数字は値を繰り返す列1と、音声、電子メール、電話、ボイスメールを含むことができる列2を含みます):
123,voice
123, tel
324,voice mail
345,email
123,email
結果ファイルヘッダーの場合、Y
2番目の列に値がある場合は必須です。N
number,voice,voice mail,tel,email
123,Y,N,Y,N,Y
324,N,Y,N,N,N
345,N,N,N,N,Y
答え1
Perlソリューション:
perl -F'\s*,\s*' -lane '
BEGIN{ $outfile = "output_file_name";
open $OUTFILE , ">" , $outfile
}
$h{$F[0]}{$F[1]}++;
END{
$i{$_}++ for map {keys $h{$_}} keys %h;
print $OUTFILE "number,".join ",",sort keys %i;
for $number (keys %h) {
$string = "$number,";
$string .= $h{$number}{$_} ? "Y," : "N," for keys %i;
$string =~ s/,$//;
print $OUTFILE $string
}
} ' input_file
コードはテストされ、サンプル入力に対して機能します。output_file_name
必要な出力ファイルの実際の名前に変更するだけです。
警告する
出力ファイルがある場合、そのファイルは削除されます。追加するには、3行目に">"
変更してください。">>"