【问题标题】:Awk multiple columns in 2 files and output the matching linesawk 2个文件中的多列并输出匹配的行
【发布时间】:2015-07-06 17:20:40
【问题描述】:

我有2个输入文件,如下 x.txt

C20775336       maker   gene    1895    2166    .       -       .       ID=gene1;Name=maker-C20775336-augustus-gene-0.0
C20775336       maker   gene    3097    4624    .       -       .       Parent=mRNA1

文件 2 y.txt

scaffold4557    hsal_OGSv3.3    gene    3097    4624    74.8    +       .       ID=HSAL10661-RA;Parent=HSAL10661;Name=HSAL10661-RA;Alias=Hsal_17580--XP_001599845.1_NASVI
C20775336       maker   gene     1895    1962    .       -       2       ID=CDS1;Parent=mRNA1

我想比较两个文件中的第 4 列和两个文件中的第 5 列,如果它同时满足两个条件,则从文件 2 中打印该行 在上述情况下..输出应该如下:

scaffold4557    hsal_OGSv3.3    gene    3097    4624    74.8    +       .       ID=HSAL10661-RA;Parent=HSAL10661;Name=HSAL10661-RA;Alias=Hsal_17580--XP_001599845.1_NASVI

我尝试使用 awk,但没有成功。在此先感谢

【问题讨论】:

  • “如果它同时满足两个条件”... 究竟是什么条件?

标签: awk


【解决方案1】:
$ awk 'FNR==NR{seen[$4,$5]=1;next} ($4,$5) in seen' x.txt y.txt 
scaffold4557    hsal_OGSv3.3    gene    3097    4624    74.8    +       .       ID=HSAL10661-RA;Parent=HSAL10661;Name=HSAL10661-RA;Alias=Hsal_17580--XP_001599845.1_NASVI

【讨论】:

  • 我正在寻找一个类似的答案,除了我在 file1 中的第 5 列是文件 2 中第 5 列的子集,在这种情况下我如何比较两者?
  • @AishwaryaKulkarni 你能准确地说出“子集”的含义吗? (可能会打开一个包含详细信息的新问题。)
  • 嗨@John1024 我创建了一个新问题stackoverflow.com/questions/38882681/…,谢谢
猜你喜欢
  • 2020-10-02
  • 2018-10-25
  • 2014-02-20
  • 2018-08-08
  • 2023-03-11
  • 1970-01-01
  • 2022-01-07
  • 1970-01-01
  • 2021-12-08
相关资源
最近更新 更多