J'ai une chaîne comme
"aaa,aaa,aaa,bbb,bbb,ccc,bbb,ccc"
Je veux supprimer le mot en double de la chaîne, puis la sortie sera comme
"aaa,bbb,ccc"
J'ai essayé ce code source
$ echo "zebra ant spider spider ant zebra ant" | xargs -n1 | sort -u | xargs
Il fonctionne très bien avec la même valeur, mais lorsque je donne ma valeur de variable, il affiche également tous les mots en double.
Comment puis-je supprimer la valeur en double.
METTRE À JOUR
Ma question est d'ajouter toutes les valeurs correspondantes dans une seule chaîne si l'utilisateur est le même. J'ai des données comme celle-ci ->
user name | colour
AAA | red
AAA | black
BBB | red
BBB | blue
AAA | blue
AAA | red
CCC | red
CCC | red
AAA | green
AAA | red
AAA | black
BBB | red
BBB | blue
AAA | blue
AAA | red
CCC | red
CCC | red
AAA | green
Dans le codage, je récupère tous les utilisateurs distincts, puis je concatène la chaîne de couleur avec succès. Pour que j'utilise du code -
while read the records
if [ "$c" == "" ]; then #$c I defined global
c="$colour1"
else
c="$c,$colour1"
fi
Lorsque j'imprime cette variable $ c, j'obtiens la sortie (pour l'utilisateur AAA)
"red,black,blue,red,green,red,black,blue,red,green,"
Je veux supprimer la couleur en double. La sortie souhaitée devrait alors être comme
"red,black,blue,green"
Pour cette sortie souhaitée, j'ai utilisé le code ci-dessus
echo "zebra ant spider spider ant zebra ant" | xargs -n1 | sort -u | xargs
mais il affiche la sortie avec des valeurs en double.
"rouge, noir, bleu, rouge, vert, rouge, noir, bleu, rouge, vert", merci
echo 'aaa aaa aaa bbb bbb ccc bbb ccc' | xargs -n1 | sort -u | xargs
donne aaa bbb ccc
.. donc vous devez montrer le code exact que vous avez fatigué et le résultat que vous avez obtenu .. avec la chaîne en variable:s='aaa aaa aaa bbb bbb ccc bbb ccc'; echo "$s" | xargs -n1 | sort -u | xargs