8-タプルの重複決定[閉じる]

8-タプルの重複決定[閉じる]

16個のコレクションがあり、合計8個の数字があります。

(11 12 11 44 11 12 11 23)
(12 21 11 44 11 12 11 23)
(11 42 21 13 12 21 31 14)
(11 42 21 13 12 21 11 34)
and so on

各8つのタプルに重複する項目があることを確認したいと思います。数字が表示される順序は重要ではありません。

結果は各パターンの発生回数を返します。

(11 12 11 44 11 12 11 23) 1
(12 21 11 44 11 12 11 23) 1
(11 42 21 13 12 21 31 14) 2
(11 42 21 13 12 21 11 34) 1

ベストアンサー1

これは一つの方法です。重複した行を含む次の入力ファイルから始めます。

cat tupl
11 12 11 44 11 12 11 23
12 21 11 44 11 12 11 23
12 21 11 44 11 12 11 23
12 21 11 44 11 12 11 23
12 21 11 44 11 12 11 23
11 42 21 13 12 21 31 14
11 42 21 13 12 21 11 34
11 12 11 44 11 12 11 23

各行の数字の順序は重要ではないと述べたので、最初に各行の数字を並べ替えることができます。

awk ' {split( $0, a, " " ); asort( a ); for( i = 1; i <= length(a); i++ ) printf( "%s ", a[i] ); printf( "\n" ); }' tupl 
11 11 11 11 12 12 23 44 
11 11 11 12 12 21 23 44 
11 11 11 12 12 21 23 44 
11 11 11 12 12 21 23 44 
11 11 11 12 12 21 23 44 
11 12 13 14 21 21 31 42 
11 11 12 13 21 21 34 42 
11 11 11 11 12 12 23 44 

awkの連想配列のアイデアを使用して、結果を次のコマンドにパイプして同じ行数を計算できます。

awk '{a[$0]++} END {for (i in a) print i, a[i]}'
11 12 13 14 21 21 31 42  1
11 11 11 11 12 12 23 44  2
11 11 12 13 21 21 34 42  1
11 11 11 12 12 21 23 44  4

おすすめ記事