En résumé, j'ai deux fichiers TAB comme décrit ci-dessous.Puis-je effectuer un hachage par Unix dans lequel pour chaque ligne dans une colonne imprimer toutes les coïncidences correspondant à l'autre colonne dans l'autre fichier de l'onglet
Input1.tsv
34167 305603 S568 phosphorylation S 568
99024 179102 T170 Glycosylation T 170
99025 179102 Y182 phosphorylation Y 182
74300 105800 S632 phosphorylation S 632
41095 105800 S748 phosphorylation S 748
41096 105800 S778 acethylation S 778
et Input2.tsv
179102 FUCA1 NM_000147.4 NP_000138.2
179102 FUCA1 XM_005245821.2 XP_005245878.1
179102 FUCA1 XM_011541167.2 XP_011539469.1
179102 FUCA1 XM_017000905.1 XP_016856394.1
357819 AGT NM_000029.3 NP_000020.1
105800 INPP5B NM_001297434.1 NP_001284363.1
105800 INPP5B NM_001297434.1 NP_001284363.1
sortie souhaitée
179102 FUCA1 NM_000147.4 NP_000138.2 Glycosylation T 170 phosphorylation Y 182
179102 FUCA1 XM_005245821.2 XP_005245878.1 Glycosylation T 170 phosphorylation Y 182
179102 FUCA1 XM_011541167.2 XP_011539469.1 Glycosylation T 170 phosphorylation Y 182
179102 FUCA1 XM_017000905.1 XP_016856394.1 Glycosylation T 170 phosphorylation Y 182
357819 AGT NM_000029.3 NP_000020.1
105800 INPP5B NM_001297434.1 NP_001284363.1 phosphorylation S 748 phosphorylation S 748 acethylation S 778
105800 INPP5B NM_001297434.1 NP_001284363.1 phosphorylation S 748 phosphorylation S 748 acethylation S 778
Je voudrais faire un hachage afin de relier chaque coïncidence dans la deuxième colonne pour chaque ligne du premier fichier à la première colonne du deuxième fichier et imprimer le deuxième fichier et toutes les coïncidences du premier fichier pour la veille rangée. Je suis en train de faire un hachage comme
awk 'BEGIN {FS=OFS="\t"} NR==FNR {h[$2]=$4"\t"$5"\t"$6; next} {print $0,h[$1]}' "input1" "input2" > "output";
L'inconvénient est que je pense que l'impression que la première coïncidence trouvée dans premier fichier, mais pas tous. Ainsi, toutes les coïncidences liées au premier fichier ne sont pas enregistrées dans le fichier de sortie. Y at-il une possibilité de faire dans l'environnement Unix afin d'obtenir la sortie désirée? Merci à l'avance
Merci @CWLiu. Apparemment, cela fonctionne correctement! –
Oui, @EdMorton, très bon point, je vais le modifier comme les suggestions. – CWLiu
Vous avez raison @EdMorton. Merci encore! –