尝试根据一些文档(linky)运行awk命令。
但是,每当我在awk命令中添加{1}或{2}时,如文档所述(参见上面的链接或下面的示例),我的搜索就会停止工作。即使在巨大的千兆字节文件上也会出现零结果。有什么建议吗?
awk '($3=="+" && $4~/^CG/)' example
awk '($3=="+" && $4~/..CG/)' example
awk '($3=="+" && $4~/.CG/)' example
awk '($3=="+" && $4~/^..CG/)' example
awk '($3=="+" && $4~/.{2}CG/)' example
awk '($3=="+" && $4~/.{1}CG/)' example
awk '($3=="+" && $4~/^.{2}CG/)' example
awk '($3=="-" && $4~/^.{1}CG/ ) || ($3=="+" && $4~/^.{2}CG/)' BSMAPexample.txt > CpG.txt
chr pos strand context ratio total_C methy_C CI_lower CI_upper
chr1 3121589 + CGCGT 0.000 56 0 0.000 0.064
chr1 3121597 + ATCGG 0.000 56 0 0.000 0.064
chr1 3121599 + GTCGT 0.000 56 0 0.000 0.064
chr1 3121605 + CTCGG 0.000 56 0 0.000 0.064
chr1 3121606 + TGCGC 0.000 56 0 0.000 0.064
chr1 3121607 + GGCGC 0.000 56 0 0.000 0.064
chr1 3121611 + CTCGA 0.000 56 0 0.000 0.064
chr1 3121614 + TACGC 0.000 56 0 0.000 0.064
chr1 3121631 + CTCGT 0.000 56 0 0.000 0.064
答案 0 :(得分:3)
您已从原始样本数据中删除了一些列。
这是您发送的链接中的原始数据:
LPDISPATCH lpDisp;
m_webBrowser->get_Document(&lpDisp);
lpDisp->QueryInterface(IID_IHTMLDocument2,(void**)&m_htmlDocument);
m_htmlDocument->put_charset(L"utf-8");
_variant_t rl=1L;
m_webBrowser->Refresh2(&rl);
这是您发布的示例数据:
chr pos strand context ratio total_C methy_C CI_lower CI_upper
chr1 3121589 + CGCGT 0.000 56 0 0.000 0.064
chr1 3121597 + ATCGG 0.000 56 0 0.000 0.064
chr1 3121599 + GTCGT 0.000 56 0 0.000 0.064
对于这样的表达式,这是一个问题:
chr pos strand context ratio total_C methy_C CI_lower CI_upper
chr1 3121589 CGCGT 0.000 56 0 0.000 0.064
chr1 3121597 ATCGG 0.000 56 0 0.000 0.064
chr1 3121599 GTCGT 0.000 56 0 0.000 0.064
期望第三列中的+符号(awk '($3=="+" && $4~/.{2}CG/)' example
,数据中不存在)和第四列中的一些CG重复($3
似乎位于第3位)。它不会匹配您文件中的任何行。
如果您修改表达式以引用正确的列($4
)并忘记+号,因为它没有出现在您的数据中,您将匹配文件中的行。
$3
实际上示例文件中的所有行在CG(** CG *)之前都有2个字符。只会跳过标题。
答案 1 :(得分:0)
问题解决了。我用过gawk和--posix
gawk --posix '($3=="-" && $4~/^.{1}CG/ ) || ($3=="+" && $4~/^.{2}CG/)'
现在工作得很好。