Tri unique dans une chaine de caractères
JD
-
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je cherche à récuperer sous AIX les champs uniques dans une chaîne de caractères. Par exemple:
a="1 2 1 2 3 1"
resultat="1 2 3"
Avez-vous une idée?
Je cherche à récuperer sous AIX les champs uniques dans une chaîne de caractères. Par exemple:
a="1 2 1 2 3 1"
resultat="1 2 3"
Avez-vous une idée?
3 réponses
-
Salut,
[tmpfs]$ echo "$a" 1 2 1 2 3 1 [tmpfs]$ b=$(echo -e "${a// /\n}" | sort -u | tr '\n' ' ') [tmpfs]$ echo "$b" 1 2 3 [tmpfs]$
;-))
-
Merci Jipicy,
L'idée de remplacer les espaces par des \n est excellente. ca marche fort bien en Linux mais pas sous AIX :-[
b=$(echo -e "${a// /\n}" | sort -u | tr '\n' ' ')
ksh: "${a// /\n}": bad substitution -
hello
autre méthode pour conserver l'ordre des champs$ echo 3 1 3 1 2 1 2 3 1 | awk '{for(n=1;n<=NF;n++)if(!x[$n])printf x[$n]=$n OFS ;print""}' 3 1 2 $