首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >打印出文件

打印出文件
EN

Stack Overflow用户
提问于 2014-08-12 08:21:45
回答 4查看 151关注 0票数 2

我试图在两个文件之间找到相交的行。其中一个文件是'Sample_hg19_mapped.bed‘,另一个'intersect.RData’具有与第一个文件相同的数据。

床铺档案:

代码语言:javascript
复制
chrM    16338   16363   HWI-ST575:220:C2MMMACXX:3:1112:17158:21371  255 -
chrM    16352   16377   HWI-ST575:220:C2MMMACXX:3:1102:7906:41988   255 -
chrM    16352   16377   HWI-ST575:220:C2MMMACXX:3:2113:18341:36393  255 -
chrM    16376   16401   HWI-ST575:220:C2MMMACXX:3:1310:14517:85268  255 -

RData文件:

代码语言:javascript
复制
HWI-ST575:220:C2MMMACXX:3:1310:14517:85268
HWI-ST575:220:C2MMMACXX:3:2113:18341:36393
HWI-ST575:220:C2MMMACXX:3:2113:45341:56393

作为输出,它需要给出在RData.file中具有相同值的BED文件行。例如,RData的第一个和第二个值存在于BED文件中,而不存在于第三个文件中,因此在输出中需要这样做:

代码语言:javascript
复制
chrM    16376   16401   HWI-ST575:220:C2MMMACXX:3:1310:14517:85268  255 -
chrM    16352   16377   HWI-ST575:220:C2MMMACXX:3:2113:18341:36393  255 -

我用这些代码来管理它:

代码语言:javascript
复制
perl -ane '$f=$F[0].$F[1]; print "$k{$f}$_" if $k{$f}; $k{$f}=$_;' Sample_hg19_mapped.bed  intersect.RData

但是,匹配的行在屏幕上,我希望它们保留在文件中,但我无法生成输出文件。我试了一次,改变了很多:

代码语言:javascript
复制
####!/bin/bash     
perl -ane '$f=$F[0].$F[1]';"Sample_hg19_mapped.bed intersect.RData"

if $k{$f};$k{$f}=$_ {
       print "$k{$f}$_";
} else {
       print "epic fail";
}
open($f, ">", "output.txt")
       or die "cannot open > output.txt: $!"; 
close $f;

print "done\n";

但我犯了很多错误,比如:

代码语言:javascript
复制
/var/spool/slurmd/job2572366/slurm_script: line 3: Sample_hg19_mapped.bed intersect.RData: command not found
/var/spool/slurmd/job2572366/slurm_script: line 6: syntax error near unexpected token `}'
/var/spool/slurmd/job2572366/slurm_script: line 6: `} else {'

你能帮我吗?非常感谢

EN

Stack Overflow用户

发布于 2014-08-12 10:49:11

下面的perl一行程序应该可以满足您的需要:

代码语言:javascript
复制
perl -lane'
    BEGIN { $x = pop; %h = map { chomp; $_ => 1 } <>; @ARGV = $x } 
    print if /./ && $h{$F[3]}
' intersect.RData Sample_hg19_mapped.bed
  • 我们将intersect.RData加载到BEGIN块中的哈希映射中
  • 在主体中,我们检查Sample_hg19_mapped.bed文件中的第三个字段是否存在于散列映射中。如果它这样做了,那么打印这条线。
  • 如果输出看起来很好,那么您可以重定向到另一个文件。
票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25259411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档