Verbinden Sie zwei Dateien, die auf zwei gemeinsamen Spalten basieren, ordnungsgemäß

Ich habe zwei Dateien, die ich basierend auf Spalten verbinden / zusammenführen möchte1 und2. Sie sehen ungefähr so ​​aus, mitfile1 (58210 Linien) ist viel kürzer alsfile2 (815530 Linien) und ich möchte den Schnittpunkt dieser beiden Dateien anhand von Feldern finden1 und2 als index:

file1:

2L      25753   33158
2L      28813   33158
2L      31003   33158
2L      31077   33161
2L      31279   33161
3L      32124   45339
3L      33256   45339
...

file2:

2L      20242   0.5     0.307692307692308
2L      22141   0.32258064516129        0.692307692307692
2L      24439   0.413793103448276       0.625
2L      24710   0.371428571428571       0.631578947368421
2L      25753   0.967741935483871       0.869565217391304
2L      28813   0.181818181818182       0.692307692307692
2L      31003   0.36    0.666666666666667
2L      31077   0.611111111111111       0.931034482758621
2L      31279   0.75    1
3L      32124   0.558823529411765       0.857142857142857
3L      33256   0.769230769230769       0.90625
...

Ich habe die folgenden Befehle verwendet, aber am Ende eine unterschiedliche Anzahl von Zeilen erhalten:

awk 'FNR==NR{a[ und2]=$3;next} {if( und2 in a) print}' file1 file2 | wc -l
awk 'FNR==NR{a[ und2]=$3;next} {if( und2 in a) print}' file2 file1 | wc -l

Ich bin mir nicht sicher, warum dies passiert, und habe vor dem Vergleich versucht, zu sortieren, nur für den Fall, dass ich doppelte Zeilen habe (basierend auf Spalten)1 und2) in beiden Dateien, aber es scheint nicht zu helfen. (Einsichten darüber, warum dies so ist, sind ebenfalls erwünscht.)

Wie kann ich nur die Dateien zusammenführen, damit nur die Zeilen vonfile2 das haben die entsprechenden Spalten1 und2 imfile1 Gedruckt werden, mit Spalte3 vonfile1 hinzugefügt, um ungefähr so ​​auszusehen:

2L      25753   0.967741935483871       0.869565217391304    33158
2L      28813   0.181818181818182       0.692307692307692    33158
2L      31003   0.36    0.666666666666667    33158
2L      31077   0.611111111111111       0.931034482758621    33161
2L      31279   0.75    1    33161
3L      32124   0.558823529411765       0.857142857142857    45339
3L      33256   0.769230769230769       0.90625    45339

Antworten auf die Frage(3)

Ihre Antwort auf die Frage