2016-08-20 10 views
-1

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

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

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

a,4 
b,2 
+1

Можете ли вы показать нам, что вы пробовали до сих пор? –

+1

Трудно представить, как вы могли бы приложить меньше усилий, чтобы задать этот вопрос. –

ответ

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 
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}' 

 Смежные вопросы

  • Нет связанных вопросов^_^