Ich habe ein grundlegendes Niveau von Unix zu verstehen, so dass dieses Problem einfach sein könnte.AWK Befehl zum Vergleich zweier Dateien, Bericht Zeile der ersten Datei, wenn nicht in der zweiten Datei gefunden, Bericht Zeile der zweiten Datei, wenn gefunden
Ich habe versucht, den "awk" -Befehl zu verwenden, um zwei Dateien zu vergleichen (zwei Spalten in jeder Datei getrennt durch eine Registerkarte) mit dem Ziel, eine Datei mit allen Zeilen der Datei 1 zu haben Zeile in der Datei 2, ich mochte die Zeile der Datei 1 ersetzt wird mit derselben Zeile aus der Datei 2.
File 1:
Supercontig_12.1,420 0
Supercontig_12.1,421 0
Supercontig_12.1,422 0
Supercontig_12.1,423 0
…(rows continue in numerical order)
Supercontig_12.1,428 0
Supercontig_12.1,429 0
Supercontig_12.1,430 0
File 2 (not in numerical order):
Supercontig_12.1,422 0.6
Supercontig_12.1,426 0.333333
Supercontig_12.1,428 0.5
Supercontig_12.1,429 0
gewünschter Ausgang
Output:
Supercontig_12.1,420 0
Supercontig_12.1,421 0
Supercontig_12.1,422 0.6
Supercontig_12.1,423 0.333333
…
Supercontig_12.1,428 0.5
Supercontig_12.1,429 0
Supercontig_12.1,430 0
I wurde mit dem folgenden Befehl gefunden wird, aber es fügt nur die Zeilen der Datei 2 am Ende der Zeilen von Datei 1 hinzu, ähnlich wie die "cat" -Komm und.
$ awk -F"\t" 'NR==FNR{a[$1]} $1 in a{print $1 "\t" $2}' file1.txt file2.txt > output.txt
Ich weiß, ich mache einen Array die Größe der Datei 1, das ist, was ich tun möchte, aber ich bin nicht für die Datei-2-Daten innerhalb dieses Array auswählen. Jede Hilfe wäre sehr willkommen. Danke im Voraus.
Andy
Kann Datei2 Datensätze in Datei1 fehlen? Ist der Wert in Datei1 immer 0? –
Hallo Walter, vielen Dank für deine Fragen. Um zu antworten, die zweite Spalte in Datei1 ist immer eine Null, da ich versuche, Daten in eine "leere" Spalte einzugeben, und nein, die Datensätze in Datei2 werden immer in Datei1 gefunden, es ist nur, dass Datei1 Zeilen nicht gefunden haben kann in Datei2. – adklocko