Awk的一般功能2---Read数的筛除

Awk作为linux内置的文本数据处理工具,具有简单迅速的特点,在处理上万行数据时,其相对于EXCEL具有优势突出,因此我们在转录组数据分析的最后一步,将Read count数据上传到DEseq2计算差异表达基因前,需要将样本中Read count数据为0较多的基因筛除掉。

1、我们现在有这样的一个文件MEVN_MEVE.txt

MEVN_MEVE.txt

2、目前想把它变成这样的文件MEVN_MEVE_sift.txt

MEVN_MEVE_sift.txt

3、这两个文件的差别是:

MEVN_MEVE_sift.txt文件是把MEVN_MEVE.txt文件中的后六列中至少有3个列不为0的行提取出来

4、那如何用awk去实现这个功能呢?

上代码:

awk '$2+$3+$4+$5!=0 && $2+$3+$4+$6!=0 && $2+$3+$4+$7!=0 && $2+$3+$5+$6!=0 && $2+$3+$5+$7!=0 && $2+$3+$6+$7!=0 && $2+$4+$5+$6!=0 && $2+$4+$5+$7!=0 && $2+$4+$6+$7!=0 && $2+$5+$6+$7!=0 && $3+$4+$5+$6!=0 && $3+$4+$5+$7!=0 && $3+$4+$6+$7!=0 && $3+$5+$6+$7!=0 && $4+$5+$6+$7!=0 {print $0}' MEVN_MEVE.txt > MEVN_MEVE_sift.txt

这个代码的意思是:任意四个数相加都不为0的行保留下来。
我们可以体会一个思想的转换:
一行中共有6个数,保证其中至少3个数都不为0。
一行中共有6个数,任意四个数相加都不为0。

这其实才是编程的核心思想!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容