我需要一些帮助。
第一个文件
0.5
0.4
0.1
0.6
0.9
第二个文件.bam (我必须使用samtools视图)
aaaa bbbb cccc
aaab bbaa ccaa
hoho jojo toto
sese rere baba
jouj douj trou
我需要输出:
aaaa bbbb cccc
aaab bbaa ccaa
sese rere baba
条件:如果来自第一个文件的$ 1是< 0.3; 0.6>从第二个文件中打印相同的行,如果不是,则擦除它。我想从第一个文件的条件得到滤液第二个文件。我更喜欢awk或bash代码,但这并不重要。
第一个文件的条件:
awk '{if($1>0.3 && $1<0.6) {print $0}}'
你能帮助我吗?
非常感谢
答案 0 :(得分:5)
另一种方式
paste file1 file2 | awk '$1<=0.6&&$1>=0.3{$1="";print substr($0,2) }'
答案 1 :(得分:4)
您可以使用awk及其getline
功能。它从第二个文件读取行,并且对于每个文件使用getline
从第一个文件中读取一行,比较它的数字并打印它是否匹配:
awk '
BEGIN { f = ARGV[2]; --ARGC }
{
getline n <f
if ( (n >= 0.3) && (n <= 0.6) ) {
print $0
}
}
' file2 file1
它产生:
aaaa bbbb cccc
aaab bbaa ccaa
sese rere baba
答案 2 :(得分:4)
这是一个awk
解决方案:
awk 'FNR==NR {a[NR]=$1;next} a[FNR]>0.3 && a[FNR]<0.6' firstfile secondfile
aaaa bbbb cccc
aaab bbaa ccaa
由于您说sese rere baba
而非<0.6
,因此不会打印 <=0.6