1

我在寻找精确模式时遇到问题。我有一个包含以下信息的文件:

GAT CCA AAA CAC ATT CTC CCT GGT AGC ATG GAC AAG CAA CAT TTT GGG AGA AAT GGA GCA AAA AAA CAT 
AAA CTT CAC AGT AAC AAA CAT AAA CAC TCT CTC TCT CTC TCT CTC TCT CTC TCT CTC TCT CTC TCT CTC 
TCT CTC TCT CCA CAC ACA CAC ACA CTC GCA CTC ACA GCC TCA CAA CAC AGG TAT ACA TGT TTA CTT AGG 

例如,我试图用 AWK 计算 GAT 出现的次数:

awk -F " " '/AAC/ {++i} END {print "Count of TC is "i"."}'

它给了我一个不正确的,比正确的更高的价值。我也试过这样做:

awk -F " " '/^AAC$/ {++i} END {print "Count of TC is "i"."}'

但它什么也没给我,或者换句话说:“TC 的计数是。”

有什么建议吗?

4

1 回答 1

1

您需要使用循环测试每个字段,或使用记录选择器对其进行划分,然后计数。

尝试这个gnu awk

awk '/ACA/ {a++} END {print a}' RS='[[:space:]]+' file
4

awk '/AAA/ {a++} END {print a}' RS='[[:space:]]+' file
6

循环awk版本

awk '{for (i=1;i<=NF;i++) if ($i~/AAA/) a++} END {print a}' file
6

另一种方法:

awk '{a+=gsub(/AAA/,x)} END {print a}' file
6
于 2013-11-08T09:48:24.190 回答