레코드를 일치시키고 Y와 N을 표시하려면 grep 및 sort를 사용해야 합니다.

레코드를 일치시키고 Y와 N을 표시하려면 grep 및 sort를 사용해야 합니다.

입력 파일(숫자가 값을 반복하는 열 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원하는 출력 파일의 실제 이름으로 수정하면 됩니다 .

경고하다

출력 파일이 있는 경우 해당 파일이 삭제됩니다. 추가하려면 세 번째 줄로 ">"변경 하세요.">>"

관련 정보