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

Compare 4 columns in two files; and output the line for unique combination (from first file) and line for duplicate combination (from second file)

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

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 组合,但无法获得正确答案。 任何建议都会有所帮助。

谢谢, 阿米特

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

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