Wenn ich einen String „1 2 3 2 1“ habe – oder ein Array [1,2,3,2,1] – wie kann ich die eindeutigen Werte auswählen, d. h.
"1 2 3 2 1" produces "1 2 3"
oder
[1,2,3,2,1] produces [1,2,3]
Ähnlich wie uniq, aber uniq scheint auf ganzen Zeilen zu funktionieren, nicht auf Mustern innerhalb einer Zeile …
Akzeptierte Antwort:
Mit GNU awk
(dies behält auch die ursprüngliche Reihenfolge bei)
printf '%sn' "1 2 3 2 1" | awk -v RS='[[:space:]]+' '!a[$0]++{printf "%s%s", $0, RT}'
1 2 3
Zum read
in eine bash
Array
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