awk-Suche-Spalte aus einer Datei, wenn eine übereinstimmung Spalten aus beiden Dateien

Ich versuche zu vergleichen, Spalte 1, Datei1 und Spalte 3 aus Datei 2, wenn Sie übereinstimmen, und drucken Sie dann die erste Spalte von Datei1 und die ersten beiden Spalten von Datei2.

hier ist ein Beispiel aus jeder Datei:

Datei1

Cre01.g000100   
Cre01.g000500  
Cre01.g000650  

Datei2

chromosome_1    71569  |655|Cre01.g000500|protein_coding|CODING|PAC:26902937|1|1)
chromosome_1    93952  |765|Cre01.g000650|protein_coding|CODING|PAC:26903448|11|1)
chromosome_1    99034  |1027|Cre01.g000100 |protein_coding|CODING|PAC:26903318|9|1)

gewünschte Ausgabe

Cre01.g000100  chromosome_1    99034        
Cre01.g000500  chromosome_1    71569   
Cre01.g000650  chromosome_1    93952

Ich habe auf der Suche in verschiedenen threads, die sind etwas ähnlich, aber ich kann nicht scheinen, um es zu drucken die Spalten aus den beiden Dateien. Hier sind einige links, die etwas im Zusammenhang:

awk vergleichen Sie 2 Dateien, 2 Felder, die verschiedene Reihenfolge, in der die Datei -, Druck-oder merge-Spiel und nicht-Spiel-Linien

Erhalten Muster aus einer Datei zu vergleichen, um eine Spalte von einer anderen Datei, print übereinstimmenden Zeilen, mit awk

awk vergleichen Sie die Spalten aus zwei Dateien, unterstellen Werten einer anderen Spalte

Erhalten Muster in einer Datei von einem anderen mit ack oder awk oder besser Weg als mit grep?

Awk - kombinieren der Daten aus 2 Dateien und drucken 3. Datei wenn die Schlüssel abgestimmt

Ich das Gefühl, ich sollte es herausfinden können basierend auf diesen threads, aber es waren zwei Tage, die ich habe versucht, verschiedene Variationen des codes und ich habe nicht bekommen, überall.
Hier ist etwas code, ich habe versucht, mit auf meine Dateien:

awk 'FNR==NR{a[$3]=$1;next;}{print $0 ($3 in a ? a[$3]:"NA")}' file1 file2

awk 'NR==FNR{ a[$1]; next} ($3 in a) {print $1 $2 a[$1]}' file1 file2

awk 'FNR==NR{a[$1]=$0; next}{print a[$1] $0}' file1 file2

Ich weiß, ich habe ein temp-matrix, enthält die erste Spalte von Datei1 (oder der 3. Säule von Datei2) dann vergleichen Sie es mit der anderen Datei. Wenn es eine übereinstimmung gibt, dann drucken Sie zuerst die Spalte aus Datei 1 und Spalte 1 und Spalte 2 aus Datei 2.

Danke für die Hilfe!

Schreibe einen Kommentar