从原始测序数据中,我创建了一个计数文件(.txt
),其中包含每个样本的唯一序列计数。
数据如下所示:
sequence seqLength S1 S2 S3 S4 S5 S6 S7 S8
AAAAA... 46 0 1 1 8 1 0 1 5
AAAAA... 46 50 1 5 0 2 0 4 0
...
TTTTT... 71 0 0 5 7 5 47 2 2
TTTTT... 81 5 4 1 0 7 0 1 1
我想过滤每行和的序列,因此只删除所有样本总和(S1到S8的总和)低于例如100的行。
这可以用awk完成,但我没有使用这个文本处理实用程序的经验。 有人可以帮忙吗?
答案 0 :(得分:3)
尝试一下:
awk 'NR>1 {sum=0; for (i=3; i<=NF; i++) { sum+= $i } if (sum > 100) print}' file.txt
它会跳过第1行NR>1
然后将在示例中从第3项(S1到S8)开始每行汇总项目:
{sum=0; for (i=3; i<=NF; i++) { sum+= $i }
然后只会打印sum为&gt;的行。超过100:if (sum > 100) print}'
您可以根据总和修改/测试条件,但希望这可以让您了解如何使用awk
答案 1 :(得分:1)
关注awk
可能对您有帮助。
awk 'FNR>1{for(i=3;i<=NF;i++){sum+=$i};if(sum>100){print sum > "out_file"};sum=""}' Input_file
如果您需要不同的不同文件,那么以下内容可能有所帮助。
awk 'FNR>1{for(i=3;i<=NF;i++){sum+=$i};if(sum>100){print sum > "out_file"++i};sum=""}' Input_file