GNU/Linux >> Tutoriels Linux >  >> Linux

Linux - Joindre deux fichiers triés donne l'erreur :Join ::112855 :n'est pas trié :?

Je souhaite fusionner une variable d'un fichier à un autre sous Linux.
La première variable contient le nom sur lequel je souhaite fusionner les fichiers.

J'ai trié les deux fichiers en utilisant à la fois -f et -k :
sort -f -k 1,1 SCZ.N.tmp> SCZ.N.tmp.sorted et sort -f -k 1,1 1kg.tmp > 1kG.ref_file.sorted

Cependant, lorsque je joins les deux fichiers avec cette commande :join -1 1 -2 1 SCZ.N.tmp.sorted 1kG.ref_file.sorted> SCZ.freq.joined

Je continue à recevoir l'erreur 'join :SCZ.N.tmp.sorted:112855 :n'est pas trié :chr1_100002155_D D I6 0.995112 0.0184 0.7897 87016 ‘ Néanmoins, la jointure continue et la majorité est fusionnée. Cependant, je ne sais pas si je perds une petite proportion de cas à cause d'une incompatibilité entre les fichiers ou parce que quelque chose ne va pas avec le tri de ces fichiers.

Est-ce que quelqu'un sait ce que je fais mal? Et que puis-je faire pour ne pas avoir cette erreur ?
Merci !

J'ai aussi essayé :LANG=en_EN sort -f -k 1,1 SCZ.N.tmp> SCZ.N.tmp.sorted2 et LANG=en_EN sort -f -k 1,1 1kg.tmp > 1kg.tmp.sorted2 , avec ensuite joindre en utilisant :LANG=en_EN join -1 1 -2 1 SCZ.N.tmp.sorted2 1kg.tmp.sorted2> SCZ.freq.joined . Mais cela n'a pas résolu le problème.

Réponse acceptée :

Vous triez les fichiers avec l'option -f, en tant que clés indépendantes de la casse.

Cependant, la jointure attend les clés dans un ordre trié normal.

Vous devez ajouter l'option -i à la ligne de commande pour la jointure, pour qu'elle ignore les différences de casse.

Vous pouvez également omettre l'option -f des deux tris.

Edit:a également trouvé une autre possibilité ici. Les séparateurs de champs doivent être identiques pour le tri et la jointure. Il semble que les valeurs par défaut pour le tri et la jointure soient toutes deux des espaces, mais cela pourrait être le prochain obstacle.


Linux
  1. Fix FirewallD n'exécute pas l'erreur sur Linux Mint 12

  2. Comment réparer l'erreur Rust "linker 'cc' introuvable" sous Linux

  3. Comment joindre deux fichiers texte sous Linux

  4. Comment joindre deux fichiers CSV ?

  5. Comment joindre deux canaux nommés en un seul flux d'entrée sous Linux

Comment comparer deux fichiers dans un terminal Linux

Comment synchroniser automatiquement des fichiers entre deux serveurs Linux

Dépannage de l'erreur "Bash :Commande introuvable" sous Linux

Utilisation de la commande Diff pour comparer deux fichiers dans un terminal Linux

Comparer deux fichiers dans un terminal Linux

Différence d'espace entre deux fichiers sous Linux