Ich möchte unter Linux eine Variable von einer Datei zu einer anderen zusammenführen.
Die erste Variable enthält den Namen, unter dem ich Dateien zusammenführen möchte.
Ich habe beide Dateien mit -f und -k sortiert:sort -f -k 1,1 SCZ.N.tmp> SCZ.N.tmp.sorted
und sort -f -k 1,1 1kg.tmp > 1kG.ref_file.sorted
Wenn ich jedoch beide Dateien mit diesem Befehl verbinde:join -1 1 -2 1 SCZ.N.tmp.sorted 1kG.ref_file.sorted> SCZ.freq.joined
Ich erhalte immer wieder den Fehler „join:SCZ.N.tmp.sorted:112855:is not sorted:chr1_100002155_D D I6 0.995112 0.0184 0.7897 87016 ‘ Trotzdem wird der Join fortgesetzt und die Mehrheit wird zusammengeführt. Ich bin mir jedoch nicht sicher, ob ich einen kleinen Teil der Fälle aufgrund von Diskrepanzen zwischen den Dateien verliere oder weil beim Sortieren dieser Dateien etwas schief geht.
Weiß jemand was ich falsch mache? Und was kann ich tun, um diesen Fehler nicht zu bekommen?
Danke!
Ich habe es auch versucht:LANG=en_EN sort -f -k 1,1 SCZ.N.tmp> SCZ.N.tmp.sorted2
und LANG=en_EN sort -f -k 1,1 1kg.tmp > 1kg.tmp.sorted2
, mit anschließendem Verbinden mit:LANG=en_EN join -1 1 -2 1 SCZ.N.tmp.sorted2 1kg.tmp.sorted2> SCZ.freq.joined
. Aber das hat es nicht gelöst.
Akzeptierte Antwort:
Sie sortieren die Dateien mit der Option -f als von Groß- und Kleinschreibung unabhängige Schlüssel.
Allerdings erwartet join die Schlüssel in normal sortierter Reihenfolge.
Sie sollten die Option -i zur Befehlszeile für join hinzufügen, damit Groß- und Kleinschreibung ignoriert wird.
Alternativ können Sie die Option -f bei beiden Arten weglassen.
Edit:Habe hier auch noch eine Möglichkeit gefunden. Die Feldtrenner müssen für die Sortierung und den Join identisch sein. Es sieht so aus, als ob die Standardwerte für Sortieren und Verbinden beide Leerzeichen sind, aber das könnte die nächste Hürde sein.