Si j'ai une chaîne "1 2 3 2 1" - ou un tableau [1,2,3,2,1] - comment puis-je sélectionner les valeurs uniques, c'est-à-dire
"1 2 3 2 1" produces "1 2 3"
ou
[1,2,3,2,1] produces [1,2,3]
Semblable à uniq mais uniq semble fonctionner sur des lignes entières, pas sur des motifs à l'intérieur d'une ligne…
Réponse acceptée :
Avec GNU awk
(cela conserve également la commande d'origine)
printf '%sn' "1 2 3 2 1" | awk -v RS='[[:space:]]+' '!a[$0]++{printf "%s%s", $0, RT}'
1 2 3
Pour read
dans un bash
tableau
read -ra arr<<<$(printf '%sn' "1 2 3 2 1" |
awk -v RS='[[:space:]]+' '!a[$0]++{printf "%s%s", $0, RT}')
printf "%sn" "${arr[@]}"
1
2
3