レコードを一致させてYとNを表示するには、grepとsortを使用する必要があります。

レコードを一致させてYとNを表示するには、grepとsortを使用する必要があります。

入力ファイル(数字は値を繰り返す列1と、音声、電子メール、電話、ボイスメールを含むことができる列2を含みます):

123,voice
123, tel
324,voice mail
345,email
123,email

結果ファイルヘッダーの場合、Y2番目の列に値がある場合は必須です。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行目に">"変更してください。">>"

おすすめ記事