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.