Awk作为linux内置的文本数据处理工具,具有简单迅速的特点,在处理上万行数据时,其相对于EXCEL具有优势突出,因此我们在转录组数据分析的最后一步,将Read count数据上传到DEseq2计算差异表达基因前,需要将样本中Read count数据为0较多的基因筛除掉。
1、我们现在有这样的一个文件MEVN_MEVE.txt
2、目前想把它变成这样的文件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。