GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux – Das Zusammenführen zweier sortierter Dateien ergibt einen Fehler:Join::112855:Is Not Sorted:?

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.


Linux
  1. Fix FirewallD läuft nicht unter Linux Mint 12

  2. So beheben Sie den Rust-Fehler „Linker ‚cc‘ nicht gefunden“ unter Linux

  3. So beheben Sie einen Befehl nicht gefunden-Fehler in Linux

  4. Verwalten Sie das Linux /tmp-Verzeichnis wie ein Boss

  5. So verbinden Sie zwei Textdateien unter Linux

So vergleichen Sie zwei Dateien im Linux-Terminal

So synchronisieren Sie Dateien automatisch zwischen zwei Linux-Servern

Fehlerbehebung „Bash:Command Not Found“-Fehler in Linux

Verwenden des Diff-Befehls zum Vergleichen zweier Dateien im Linux-Terminal

Vergleichen von zwei Dateien im Linux-Terminal

Unterschied in Leerzeichen zwischen zwei Dateien unter Linux