鳳鳴は祖父の俳号

日記 メモ そんなの

フィールド毎に重複をチェックする

 Excelなどからタブ区切り形式で出力したファイルについて、それぞれのフィールド(列)ごとに項目の重複がないかチェックする。ソートは不要。
最初にフィールド数が一定かどうかチェック。asort()を使ってるのでgawkで。
フィールド毎に毎回ファイルを開いては閉じている。このためファイルを舐める時間はかかる。

# is_uniq_field.awk
BEGIN{
        FS="\t"
# check Field length
        while(getline!=0) N_F[NF]=NF
        asort(N_F,F);
        print "Fields"; for (i in F) print F[i]
        M_F = F[i]
        print M_F
        close(FILENAME)

# check uniq field
        for (N=1;N<=M_F;N++) {
                Dup=0;
                getline <FILENAME ; # dummy read
                while((getline < FILENAME)!=0) {
                        # print $N
                        if (Fi[$N]!="") {
                                Fi[$N]++;
                                Dup++;
                        } else {
                                Fi[$N]=1;
                        }
                }
                close(FILENAME)
                if (Dup==0) {
                        print "Uniq $" N;
                }
                delete Fi;
        }
}