あなたの質問は、列3には遺伝子の名前が含まれていると述べています。私はあなたの実際の入力は次のとおりだと思います:
column1 column2 Rv0729,Rv0993,Rv1408
column1 column2 Rv0162c,Rv0761c,Rv1862,Rv3086
column1 column2 Rv2790c
column3の各遺伝子名には、先行するRvサブストリングが含まれています。したがって、Pythonでそれらを次のようにカウントできます。
$ python -c "import sys;print map(lambda x: x.split()[2].count('Rv'),sys.stdin.readlines())" < input.txt
[3, 4, 1]
結果のリストには、各行の遺伝子数がそれぞれの順序で表示されます。さらに冗長にして、遺伝子に「Rv」文字列が含まれていない可能性を含める場合(ただし、column3はコンマ区切りの値文字列であると想定)、次のようにすることもできます。
#!/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))
試運転:
$ ./count_genes.py input.txt
Line 0 contains 3
Line 1 contains 4
Line 2 contains 1