2016-03-19 5 views
0

Ich versuche awk zu verwenden, um die Unterschiede zwischen file1 und file2 unter Verwendung $5 als das Übereinstimmungskriterium zu finden. Ich dachte, die awk würde funktionieren, aber ab jetzt scheint es auszugeben, was zwischen den beiden Dateien gemeinsam ist. Ich habe auch versucht, die Dateien mit dem gleichen Ergebnis umzukehren. Vielen Dank :).Verwenden von awk, um Unterschiede in zwei Dateien mit spezifischen Feld zu finden

awk mit Stromausgang

awk 'FNR==NR {a[$5]; next} $5 in a' file1 file2 
chr10 102586755 102586862 chr10:102586755-102586862 PAX2-1650|gc=63 
chr10 102587289 102587450 chr10:102587289-102587450 PAX2-1651|gc=65 

awk 'FNR==NR {a[$5]; next} $5 in a' file2 file1 
chr10 102586755 102586862 chr10:102586755-102586862 PAX2-1650|gc=63 
chr10 102587289 102587450 chr10:102587289-102587450 PAX2-1651|gc=65 

file1

chr10 102586755 102586862 chr10:102586755-102586862 PAX2-1650|gc=63 
chr10 102587289 102587450 chr10:102587289-102587450 PAX2-1651|gc=65 
chr10 102732659 102732803 chr10:102732659-102732803 unknown-1652|gc=59.4 
chr10 102732875 102733044 chr10:102732875-102733044 unknown-1653|gc=61.3 

file2

chr10 102586755 102586862 chr10:102586755-102586862 PAX2-1650|gc=63 
chr10 102587289 102587450 chr10:102587289-102587450 PAX2-1651|gc=65 
chr10 102732659 102732803 chr10:102732659-102732803 C10ORF2-1652|gc=59.4 
chr10 102732875 102733044 chr10:102732875-102733044 C10ORF2-1653|gc=61.3 

gewünschte Ausgangs

chr10 102732659 102732803 chr10:102732659-102732803 C10ORF2-1652|gc=59.4 
chr10 102732875 102733044 chr10:102732875-102733044 C10ORF2-1653|gc=61.3 

edit: Vielleicht awk

awk 'NR==FNR{a[$5];next} !($5 in a)' file1 file2 

Antwort

1

Scheint, wie Sie nur !($5 in a) verwenden müssen, anstatt $5 in a als Bedingung Druck:

$ awk 'NR == FNR { a[$5]; next } !($5 in a)' file1 file2 
chr10 102732659 102732803 chr10:102732659-102732803 C10ORF2-1652|gc=59.4 
chr10 102732875 102733044 chr10:102732875-102733044 C10ORF2-1653|gc=61.3 
Verwandte Themen