입력 파일(숫자가 값을 반복하는 열 1과 음성, 이메일, 전화, 음성 메일을 포함할 수 있는 열 2를 포함합니다):
123,voice
123, tel
324,voice mail
345,email
123,email
결과물 파일헤더의 경우 Y
두 번째 열에 값이 있는 경우 필수입니다.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 -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
원하는 출력 파일의 실제 이름으로 수정하면 됩니다 .
경고하다
출력 파일이 있는 경우 해당 파일이 삭제됩니다. 추가하려면 세 번째 줄로 ">"
변경 하세요.">>"