У меня есть текстовый файл, как это:
Fam1000: CMIN|CMIN_9-RA CMIN|ABC_7-RA GCLA|EFX5.1 GCUC|GCUC_7-RA
Fam1001: GCLA|EFX6.1 GCLA|EFX7.1
Fam1002: GCLA|EFX5.1 GCLA|EFX2.1 GCUC|GCUC_8-RA GCUC|GCUC_8-RA
Fam1003: CMIN|CMIN_001265-RA CMIN|CMIN_007282-RA
В этом файле каждая строка содержит ряд значений (которые разделены пробелом). Каждое значение имеет определенный идентификатор группы для своей группы, предшествующей символу канала (например, CMIN | CMIN_9-RA и CMIN | ABC_7-RA принадлежат группе CMIN). Буквы, следующие за каналом, могут быть произвольными буквами и цифрами.
Зная общее количество и имя групповых идентификаторов в файле (в данном случае у меня есть 3: CMIN, GCLA и GCUC). Теперь я хочу разобрать этот файл в файл, который показывает количество значений из каждой группы для каждой строки. В конце я хотел бы получить вывод, подобный этому (который может быть разделен пробелом или табуляцией):
CMIN GCLA GCUC
Fam1000: 2 1 1
Fam1001: 0 2 0
Fam1002: 0 2 2
Fam1003: 2 0 0
Я думал, что я должен сначала удалить все элементы после | для каждого значения затем подсчитайте количество уникальных идентификаторов для каждой строки, но я не мог понять, как это сделать с помощью awk. Кто-нибудь может помочь?
Кроме того, это просто упрощенный пример, фактический файл довольно большой, с несколькими тысячами строк и несколькими десятками групп.
Благодарю.