CSVファイルの可逆ペアの一致

CSVファイルの可逆ペアの一致

次の.csvファイルがあります。

A,B,1999
C,D,1990
B,A,1989
D,A,1990
A,B,1999
...

おおよそ次のように再び整理したいと思います。

A,B,1989,0,B,A,1
A,B,1999,2,B,A,0
C,D,1990,1,D,C,0
D,A,1990,1,A,D,0

つまり、3番目の列に記録された各値について、対応するペアの発生回数とA,B同じ値の発生回数を取得したいと思います。B,A

私は主にその行をA,Bその行と一致させようとしていますB,A

これにご協力いただきありがとうございます。

ベストアンサー1

牛に似た一種の栄養awk解決策:

awk -F',' '{ k=$1 FS $2 }{ a[k][$3]++; rev[k]=$2 FS $1 }
           END{ 
               for(i in a) 
                   for(j in a[i]) { 
                       print i, j, a[i][j], rev[i], a[rev[i]][j]+0; 
                       delete a[rev[i]][j] 
                   }
           }' OFS=',' file

出力:

C,D,1990,1,D,C,0
A,B,1999,2,B,A,0
D,A,1990,1,A,D,0
B,A,1989,1,A,B,0

おすすめ記事