awk输出字段中唯一的文本计数

jus*_*guy 1 awk

我试图输出输入文件中唯一文本的计数.它在,$2但我似乎只能使用下面的计数1.谢谢 :).

awk '{sub(/:.*/,"",$2)} !seen[$5]++{unq++} END{print unq}' input.txt > output.txt
Run Code Online (Sandbox Code Playgroud)

input.txt中

chrX:48544112-48544235 **WAS**:exon.1;WAS:exon.4;WAS:exon.6 271.171
chr5:1282528-1282754 **TERT**:exon.1;TERT:exon.3 349.08
chrX:48547038-48547465 **WAS**:exon.1;WAS:exon.10;WAS:exon.2 42.459
Run Code Online (Sandbox Code Playgroud)

期望的输出

2
Run Code Online (Sandbox Code Playgroud)

gle*_*man 6

如果将字段分隔符重新定义为"冒号或空格",则会更加简单

awk -F '[: ]' '!seen[$3]++ {n++} END {print n}' file
Run Code Online (Sandbox Code Playgroud)