研究了一番Linux的awk工具,感觉发现了个宝贝。“听说你厉害,但没想到你这么厉害!”
Shell脚本奉上
awk 'BEGIN{i=1} {
if ($1=="CsCen1-"i) {
if ($3==100 && $4==15) {
print $0 >> "cscen1s.id1.0co15bp"};
}
else if ($1=="#")
next;
else {
++i;
if ($3==100 && $4==15) {
print $0 >> "cscen1s.id1.0co15bp"};
}
}' cscen1s.out7
awk 'BEGIN{print "CsCen1-i" FS "chr1" FS "chr2" FS "chr3" FS "chr4" FS "chr5" FS "chr6" FS "chr7" FS "chr8" FS "chr9" FS "chrUn" FS "total" >> "cscen1s.id1.0co15bp.stat";
i=1;chrUn=0; chr1=0; chr2=0; chr3=0; chr4=0; chr5=0; chr6=0; chr7=0; chr8=0; chr9=0; total=0}
{
if ($1=="CsCen1-"i) {
++total;
if ($2=="chrUn") ++chrUn;
else if ($2=="chr1") ++chr1;
else if ($2=="chr2") ++chr2;
else if ($2=="chr3") ++chr3;
else if ($2=="chr4") ++chr4;
else if ($2=="chr5") ++chr5;
else if ($2=="chr6") ++chr6;
else if ($2=="chr7") ++chr7;
else if ($2=="chr8") ++chr8;
else if ($2=="chr9") ++chr9;
}
else{
print i FS chr1 FS chr2 FS chr3 FS chr4 FS chr5 FS chr6 FS chr7 FS chr8 FS chr9 FS chrUn FS total >> "cscen1s.id1.0co15bp.stat";
++i; chrUn=0; chr1=0; chr2=0; chr3=0; chr4=0; chr5=0; chr6=0; chr7=0; chr8=0; chr9=0; total=0;
++total;
if ($2=="chrUn") ++chrUn;
else if ($2=="chr1") ++chr1;
else if ($2=="chr2") ++chr2;
else if ($2=="chr3") ++chr3;
else if ($2=="chr4") ++chr4;
else if ($2=="chr5") ++chr5;
else if ($2=="chr6") ++chr6;
else if ($2=="chr7") ++chr7;
else if ($2=="chr8") ++chr8;
else if ($2=="chr9") ++chr9;
}
}
END {print i FS chr1 FS chr2 FS chr3 FS chr4 FS chr5 FS chr6 FS chr7 FS chr8 FS chr9 FS chrUn FS total >> "cscen1s.id1.0co15bp.stat"} ' cscen1s.id1.0co15bp
- 经验教训
① “{}”后不加分号“;”
② 注意“{}”前后匹配
③ awk ' 后面不一定是{}, 结构应该为awk 'BEGIN{ } { } END{ }'
④ 是BEGIN
不是BEGAIN
网友评论