@Geroge, FWIW, изменил мой ответ так, чтобы порядок вывода соответствовал порядку ввода. Я до сих пор не уверен, как ваше описание «уникальных вхождений первого столбца» становится числами, которые есть в вашем примере.

вая эту входную таблицу:

pac1 xxx 
pac1 yyy
pac1 zzz
pac2 xxx
pac2 uuu
pac3 zzz
pac3 uuu
pac4 zzz

Мне нужно добавить частоты в третий столбец, как это:

pac1 xxx 2/3
pac1 yyy 1/3
pac1 zzz 3/3
pac2 xxx 2/2
pac2 uuu 2/2
pac3 zzz 2/2
pac3 uuu 2/2
pac4 zzz 3/1

Где первое число - это число вхождений во втором столбце.

awk '{print $2}' input | sort | uniq -c

И число после косой черты - уникальные вхождения первого столбца:

awk '{print $1}' input | sort | uniq -c

Я хотел бы использовать реализацию в awk.

РЕДАКТИРОВАТЬ:

Пожалуйста, измените вывод - первый столбец - это имена, и мне нужно посчитать, сколько уникальных имен встречается в первом столбце, например

pac1 xxx 2/4
pac1 yyy 1/4
pac1 zzz 3/4
pac2 xxx 2/4
pac2 uuu 2/4
pac3 zzz 2/4
pac3 uuu 2/4
pac4 zzz 3/4

Так что уникальными именами являются только pac1, pac2, pac3, pac4 => 4

Что-то вроде этого:

occur=$(awk '{print $1}' input | sort | wc -l)

awk -v occur=$occur '{col2[$2]++} {print $0, col2[$2] "/" occur}' file

A хотел бы избежать появления переменной $.

Ответы на вопрос(2)

Ваш ответ на вопрос