使用AWK查找精确模式

时间:2013-11-08 09:38:54

标签: awk

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

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的数量是。”

有什么建议吗?

1 个答案:

答案 0 :(得分: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