awk比较两个文件 - 从第一个文件的condtion第二个文件中删除行

Von*_*ton 2 bash awk compare

我需要一些帮助.

第一个文件

0.5
0.4
0.1
0.6
0.9
Run Code Online (Sandbox Code Playgroud)

第二个文件.bam(我必须使用samtools视图)

aaaa bbbb cccc 
aaab bbaa ccaa
hoho jojo toto
sese rere baba
jouj douj trou
Run Code Online (Sandbox Code Playgroud)

我需要输出:

aaaa bbbb cccc
aaab bbaa ccaa
sese rere baba
Run Code Online (Sandbox Code Playgroud)

条件:如果第一个文件的$ 1在<0.3; 0.6>从第二个文件打印同一行,如果不是,则擦除它.我想从第一个文件的条件得到滤液第二个文件.我更喜欢awk或bash代码,但这并不重要.

第一个文件的条件:

awk '{if($1>0.3 && $1<0.6) {print $0}}'
Run Code Online (Sandbox Code Playgroud)

你能帮帮我吗?非常感谢

小智 5

其他方式

paste file1 file2 | awk '$1<=0.6&&$1>=0.3{$1="";print substr($0,2) }'
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢粘贴的想法,它不需要额外的内存.如果最后有条件列,则可以将其写得更短.例如:`paste file2 file1 | awk'$ NF <0.3 || $ NF> 0.6 {next} NF - '`. (2认同)