awk печатает номер строки только в столбце uniq

У меня есть такой набор данных:

1 A
1 B
1 C
2 A
2 B
2 C
3 B
3 C

И у меня есть скрипт, который вычисляет меня:

  1. Количество вхождений в строке поиска

  2. Количество рядов

    awk -v search="A" \
       'BEGIN{count=0} $2 == search {count++} END{print count "\n" NR}' input
    

Это прекрасно работает.

Я хотел бы добавить к моему awk одному лайнеру количество уникальных строк из первого столбца.

Таким образом, вывод должен быть разделен \n:

2
8
3

Я могу сделать это в отдельном коде awk, но не могу интегрировать его в исходный код awk.

awk '{a[$1]++}END{for(i in a){print i}}' input  | wc -l 

Есть идеи, как интегрировать его в одно решение awk без конвейерной обработки?


person Geroge    schedule 27.07.2017    source источник
comment
верно - исправлено. Число 8 происходит от скрипта awk - NR - это число всех строк.   -  person Geroge    schedule 27.07.2017
comment
Число 2 — это вхождения во второй столбец A (дважды), а число 3 — пример — уникальный первый столбец и рассчитанное количество строк.   -  person Geroge    schedule 27.07.2017


Ответы (1)


Похоже, вы хотите этого:

awk -v search="A" '{a[$1]++} 
                   $2 == search {count++}
                   END{OFS="\n";print count+0, NR, length(a)}' file
person hek2mgl    schedule 27.07.2017
comment
Не понял, чтобы использовать length(a) :) - person Geroge; 27.07.2017