Pokud mám řetězec „1 2 3 2 1“ – nebo pole [1,2,3,2,1] – jak mohu vybrat jedinečné hodnoty, tj.
"1 2 3 2 1" produces "1 2 3"
nebo
[1,2,3,2,1] produces [1,2,3]
Podobné jako uniq, ale zdá se, že uniq funguje na celých řádcích, nikoli na vzorech v rámci řádku…
Přijatá odpověď:
S GNU awk
(toto také zachová původní pořadí)
printf '%sn' "1 2 3 2 1" | awk -v RS='[[:space:]]+' '!a[$0]++{printf "%s%s", $0, RT}'
1 2 3
Chcete-li read
do bash
pole
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