Sua pergunta afirma que a coluna 3 contém nomes de genes. Presumo que sua entrada real seja a seguinte:
column1 column2 Rv0729,Rv0993,Rv1408
column1 column2 Rv0162c,Rv0761c,Rv1862,Rv3086
column1 column2 Rv2790c
Cada nome de gene na coluna3 contém Rv
substring principal . Assim, podemos contá-los em python da seguinte forma:
$ python -c "import sys;print map(lambda x: x.split()[2].count('Rv'),sys.stdin.readlines())" < input.txt
[3, 4, 1]
A lista resultante mostra a contagem de genes em cada linha, em sua respectiva ordem. Se queremos torná-lo mais detalhado e incluir a possibilidade de que os genes não contenham a cadeia "Rv" (mas mantenha a suposição de que a coluna3 é uma cadeia de valor separada por vírgula), também podemos fazer o seguinte:
#!/usr/bin/env python
import sys
with open(sys.argv[1]) as fd:
for index,line in enumerate(fd):
columns = line.strip().split()
num_genes=len(columns[2].split(","))
print("Line "+str(index)+" contains "+str(num_genes))
Execução de teste:
$ ./count_genes.py input.txt
Line 0 contains 3
Line 1 contains 4
Line 2 contains 1