フィールド毎に重複をチェックする
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; } }