J'ai un grand fichier de données dans le format ci-dessous:Uniq in awk; la suppression des doublons dans une colonne en utilisant awk
ENST00000371026 WDR78,WDR78,WDR78, WD repeat domain 78 isoform 1,WD repeat domain 78 isoform 1,WD repeat domain 78 isoform 2,
ENST00000371023 WDR32 WD repeat domain 32 isoform 2
ENST00000400908 RERE,KIAA0458, atrophin-1 like protein isoform a,Homo sapiens mRNA for KIAA0458 protein, partial cds.,
Les colonnes sont séparées par des tabulations. Les valeurs multiples dans les colonnes sont séparées par des virgules. Je voudrais supprimer les valeurs en double dans la deuxième colonne pour aboutir à quelque chose comme ceci:
ENST00000371026 WDR78 WD repeat domain 78 isoform 1,WD repeat domain 78 isoform 1,WD repeat domain 78 isoform 2,
ENST00000371023 WDR32 WD repeat domain 32 isoform 2
ENST00000400908 RERE,KIAA0458 atrophin-1 like protein isoform a,Homo sapiens mRNA for KIAA0458 protein, partial cds.,
J'ai essayé le code suivant ci-dessous, mais il ne semble pas supprimer les valeurs en double.
awk '
BEGIN { FS="\t" } ;
{
split($2, valueArray,",");
j=0;
for (i in valueArray)
{
if (!(valueArray[i] in duplicateArray))
{
duplicateArray[j] = valueArray[i];
j++;
}
};
printf $1 "\t";
for (j in duplicateArray)
{
if (duplicateArray[j]) {
printf duplicateArray[j] ",";
}
}
printf "\t";
print $3
}' knownGeneFromUCSC.txt
Comment puis-je supprimer les doublons dans la colonne 2 correctement?
+1 Merci beaucoup pour la réponse. Cette solution est meilleure que la mienne. Cependant, je suis également curieux de savoir pourquoi ma solution n'a pas fonctionné. Je tiendrai sur la définition d'une réponse acceptée temporairement pour cette raison. Peut-être que quelqu'un saura comment le faire dans awk. –