Se ho una stringa “1 2 3 2 1” – o un array [1,2,3,2,1] – come posso selezionare i valori univoci, ad es.
"1 2 3 2 1" produces "1 2 3"
o
[1,2,3,2,1] produces [1,2,3]
Simile a uniq ma uniq sembra funzionare su linee intere, non su schemi all'interno di una linea...
Risposta accettata:
Con GNU awk
(questo conserva anche l'ordine originale)
printf '%sn' "1 2 3 2 1" | awk -v RS='[[:space:]]+' '!a[$0]++{printf "%s%s", $0, RT}'
1 2 3
Per read
in un bash
matrice
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