2017-05-22 6 views
0

Je suis tring pour remplacer les caractères espace avec des caractères de nouvelle ligne en utilisant tr, puis en passant la sortie à uniq pour afficher des valeurs uniques, mais je ne reçois pas la sortie que je suis attendez. Quelle est la raison pour laquelle seul le mot "monde" n'est pas affiché puisqu'il est unique?tr espace remplacé avec newline ne donnant pas de valeurs uniques avec uniq

echo "hello world hello" | tr ' ' '\n' | uniq -u 

Répondre

1

Le filtre uniq ne supprimer les doublons si elles sont consécutives. La page de manuel est très explicite à ce sujet (souligné):

Filtre adjacent lignes de l'entrée (ou l'entrée standard) correspondant, écrivant sur la sortie (ou de sortie standard).

Cela signifie que vous voulez certainement pour trier les données avant de passer dans uniq:

pax> echo "hello world hello" | tr ' ' '\n' | uniq -u 
hello 
world 
hello 

pax> echo "hello world hello" | tr ' ' '\n' | sort | uniq -u 
world