AWK. найти уникальные значения для каждого элемента в другом столбце

awk gawk

565 просмотра

2 ответа

Найти количество уникальных значений во втором столбце для каждого уникального значения в первом столбце, используя ассоциативные массивы awk ??

a,x  
a,y  
a,z  
a,w  
b,x  
b,y  
a,x  
b,x

о / п должно быть

a,4  
b,2
Автор: user6677057 Источник Размещён: 08.11.2019 11:06

Ответы (2)


1 плюс

аналогичный awk

$ awk -F, -v OFS=, '{a[$1]+=!b[$1,$2]++} END{for(k in a) print k,a[k]}' file

a,4
b,2

другой подход

$ sort -u file | cut -d, -f1 | uniq -c | awk '{print $2","$1}'
Автор: karakfa Размещён: 20.08.2016 02:12

0 плюса

вход

$ cat file
a,x
a,y
a,z
a,w
b,x
b,y
a,x
b,x

Выход

$ awk  'BEGIN{FS=OFS=","}!(($1,$2) in b){b[$1,$2]; a[$1]++}END{for(i in a)print i,a[i]}' file
a,4
b,2

Читаемая версия

awk  'BEGIN{
              FS=OFS=","        # Set input and output separator
           }
!(($1,$2) in b){                # check index col1,col2 exists in array b
              b[$1,$2]          # if not exists then its unique combination
              a[$1]++           # set array b with index col1,col2 and increment count of array a
           }
        END{                    # finally loop through array a and print contents
              for(i in a)
                    print i,a[i]
           }' file
Автор: Akshay Hegde Размещён: 20.08.2016 09:54
Вопросы из категории :
32x32