文字列「123 2 1」または配列[1,2,3,2,1]がある場合、一意の値を選択するにはどうすればよいですか。つまり
"1 2 3 2 1" produces "1 2 3"
または
[1,2,3,2,1] produces [1,2,3]
uniqに似ていますが、uniqは行内のパターンではなく、行全体で機能するようです…
承認された回答:
GNU awk
を使用 (これも元の順序を保持します)
printf '%sn' "1 2 3 2 1" | awk -v RS='[[:space:]]+' '!a[$0]++{printf "%s%s", $0, RT}'
1 2 3
読むコード>
bash
に 配列
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