linux - Obtaining UNIQUE VALUE occurrences count in a set of COLUMNS using AWK -
ignoring columns 1 & 2 (only rest of columns); obtain occurrence count of unique values (ignoring odd ones) following set of data.
i have tried:
awk '{ a[$3, $4, $5, $6, $7]++ } end { (b in a) { cnt+=1 } {print cnt}}' file
i obtain 76 don’t expect value.
> 0 0 > 1 0 0 > 2 0 2 > 3 0 0 6 > 4 0 0 8 > 5 0 0 10 > 6 0 2 14 > 7 0 2 16 > 8 0 0 6 20 > 9 0 0 8 24 > 10 0 0 8 26 > 11 0 0 10 32 > 12 0 0 10 34 > 13 0 2 14 40 > 14 0 2 16 42 > 15 0 0 8 24 48 > 16 0 0 8 24 50 > 17 0 0 8 26 56 > 18 0 0 10 32 60 > 19 0 0 10 34 64 > 20 0 0 10 34 66 > 21 0 2 14 40 72 > 22 0 0 8 24 48 76 > 23 0 0 8 24 50 82 > 24 0 0 8 26 56 88 > 25 0 0 8 26 56 90 > 26 0 0 10 32 60 96 > 27 0 0 10 32 60 98 > 28 0 0 10 34 64 104 > 29 0 0 10 34 64 106 > 30 0 0 10 34 66 112 > 31 0 0 10 34 66 114 > 0 1 > 1 1 2 5 > 2 1 2 > 3 1 2 12 23 19 > 4 1 2 12 23 > 5 1 2 12 > 6 1 2 12 28 > 7 1 2 12 28 36 > 8 1 2 12 30 47 45 > 9 1 2 12 30 47 > 10 1 2 12 30 > 11 1 2 12 30 52 > 12 1 2 12 28 38 > 13 1 2 12 28 38 62 > 14 1 2 12 28 38 62 68 > 15 1 2 12 30 54 75 > 16 1 2 12 30 54 > 17 1 2 12 30 54 78 > 18 1 2 12 30 54 78 84 > 19 1 2 12 30 54 78 84 92 > 20 1 2 12 28 38 62 70 > 21 1 2 12 28 38 62 70 108 > 22 1 2 12 30 54 80 > 23 1 2 12 30 54 78 86 > 24 1 2 12 30 54 78 86 120 > 25 1 2 12 30 54 78 84 94 > 26 1 2 12 30 54 78 84 94 124 > 27 1 2 12 30 54 78 84 92 102 > 28 1 2 12 30 54 78 84 92 102 128 > 29 1 2 12 28 38 62 70 110 > 30 1 2 12 28 38 62 70 110 130 > 31 1 2 12 28 38 62 70 108 116 > 0 2 > 1 2 2 5 > 2 2 2 > 3 2 2 5 6 > 4 2 2 5 6 18 > 5 2 2 5 6 18 22 > 6 2 2 14 > 7 2 2 16 > 8 2 2 5 6 20 > 9 2 2 5 6 20 44 > 10 2 2 5 6 18 26 > 11 2 2 5 6 18 22 32 > 12 2 2 5 6 18 22 32 58 > 13 2 2 14 40 > 14 2 2 16 42 > 15 2 2 5 6 20 44 50 75 > 16 2 2 5 6 20 44 50 > 17 2 2 5 6 18 26 56 > 18 2 2 5 6 18 22 32 60 > 19 2 2 14 40 72 109 101 > 20 2 2 14 40 72 109 > 21 2 2 14 40 72 > 22 2 2 5 6 20 44 50 80 > 23 2 2 5 6 20 44 50 80 118 > 24 2 2 5 6 20 44 50 80 118 120 > 25 2 2 5 6 20 44 50 80 118 120 122 > 26 2 2 14 40 72 109 101 102 127 > 27 2 2 14 40 72 109 101 102 > 28 2 2 14 40 72 109 101 104 > 29 2 2 14 40 72 116 133 131 > 30 2 2 14 40 72 116 133 > 31 2 2 14 40 72 116 > 0 3 > 1 3 0 > 2 3 0 4 > 3 3 0 6 > 4 3 0 6 18 > 5 3 0 6 18 22 > 6 3 0 4 16 37 > 7 3 0 4 16 > 8 3 0 6 20 > 9 3 0 6 18 26 47 > 10 3 0 6 18 26 > 11 3 0 6 18 22 32 > 12 3 0 6 18 22 32 58 > 13 3 0 4 16 42 69 > 14 3 0 4 16 42 > 15 3 0 6 18 26 47 48 > 16 3 0 6 18 26 47 48 74 > 17 3 0 6 18 26 56 > 18 3 0 6 18 22 32 60 > 19 3 0 6 18 22 32 58 64 > 20 3 0 6 18 22 32 58 66 > 21 3 0 6 18 22 32 58 66 108 > 22 3 0 6 18 26 47 48 76 > 23 3 0 6 18 26 56 86 > 24 3 0 6 18 26 56 88 > 25 3 0 6 18 26 56 90 > 26 3 0 6 18 22 32 60 96 > 27 3 0 6 18 22 32 60 98 > 28 3 0 6 18 22 32 58 64 104 > 29 3 0 6 18 22 32 58 64 106 > 30 3 0 6 18 22 32 58 66 112 > 31 3 0 6 18 22 32 58 66 114 > 0 4 > 1 4 0 > 2 4 2 > 3 4 0 6 > 4 4 0 8 > 5 4 0 10 > 6 4 2 16 37 > 7 4 2 16 > 8 4 0 8 24 45 > 9 4 0 8 24 > 10 4 0 8 26 > 11 4 0 8 26 52 > 12 4 2 16 37 38 > 13 4 2 16 42 69 > 14 4 2 16 42 > 15 4 0 8 24 48 > 16 4 0 8 24 50 > 17 4 0 8 26 56 > 18 4 0 8 26 52 60 > 19 4 2 16 37 38 64 > 20 4 2 16 42 69 70 > 21 4 2 16 42 69 72 > 22 4 0 8 24 48 76 > 23 4 0 8 24 50 82 > 24 4 0 8 26 56 88 > 25 4 0 8 26 52 60 94 > 26 4 0 8 26 52 60 96 > 27 4 0 8 26 52 60 98 > 28 4 2 16 37 38 64 104 > 29 4 2 16 42 69 70 110 > 30 4 2 16 42 69 70 112 > 31 4 2 16 42 69 70 114
you can try awk
command count unique values ignoring 1st , 2nd column:
awk '{$1=$2=""; !seen[$0]++} end{print length(seen)}' file 130
if counting uniques excluding 1st , 2nd columns , ignoring odd numbers use:
awk '{for (i=3; i<=nf; i++) !($i%2) && !seen[$i]++} end{print length(seen)}' file 63
Comments
Post a Comment