比较两个文件中的4列;并输出唯一组合的行(从第一个文件)和重复组合的行(从第二个文件)

时间:2015-12-08 09:48:58

标签: awk grep perl-hash

我有两个制表符分隔值文件,比如说

File1.txt

chr1    894573  rs13303010  GG
chr2    18674   rs10195681  **CC**
chr3    104972  rs990284    AA  <--- Unique Line
chr4    111487  rs17802159  AA
chr5    200868  rs4956994   **GG**
chr5    303686  rs6896163   AA  <--- Unique Line
chrX    331033  rs4606239   TT
chrY    2893277 i4000106    **GG**
chrY    2897433 rs9786543   GG
chrM    57  i3002191    **TT**


File2.txt

chr1    894573  rs13303010  GG
chr2    18674   rs10195681  AT
chr4    111487  rs17802159  AA
chr5    200868  rs4956994   CC
chrX    331033  rs4606239   TT
chrY    2893277 i4000106    GA
chrY    2897433 rs9786543   GG
chrM    57  i3002191    TA

期望的输出:

Output.txt

chr1    894573  rs13303010  GG
chr2    18674   rs10195681  AT
chr3    104972  rs990284    AA  <--Unique Line from File1.txt
chr4    111487  rs17802159  AA
chr5    200868  rs4956994   CC
chr5    303686  rs6896163   AA  <--Unique Line from File1.txt
chrX    331033  rs4606239   TT
chrY    2893277 i4000106    GA
chrY    2897433 rs9786543   GG
chrM    57  i3002191    TA

File1.txt共有10个条目,而File2.txt有8个条目。 我想使用第1列和第2列比较文件。

如果文件的前两列值相同,则应将相应的行打印到File2.txt中的Output.txt。

当File1.txt具有唯一组合(Column1:column2,File2.txt中不存在)时,它应该将相应的行从File1.txt打印到Output.txt。

我在网站上尝试了各种awk和perl组合,但无法得到正确答案。 任何建议都会有所帮助。

谢谢, 阿米特

1 个答案:

答案 0 :(得分:0)

下次,显示您的awk代码tryso,我们可以帮助解决错误或丢失对象

awk 'NR==FNR || (NR>=FNR&&($1","$2 in k)){k[$1,$2]=$0}END{for(K in k)print k[K]}' file1 file2