String

如何從bash中的字元串/數組創建唯一元素數組?

  • August 29, 2016

如果我有一個字元串 “1 2 3 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 '%s\n' "1 2 3 2 1" | awk -v RS='[[:space:]]+' '!a[$0]++{printf "%s%s", $0, RT}'
1 2 3 

read進入bash數組_

read -ra arr<<<$(printf '%s\n' "1 2 3 2 1" |
awk -v RS='[[:space:]]+' '!a[$0]++{printf "%s%s", $0, RT}')
printf "%s\n"  "${arr[@]}"
1
2
3

如果您使用的是 zsh:

$ array=(1 2 3 2 1)
$ echo ${(u)array[@]}
1 2 3

或(如果KSH_ARRAYS未設置選項)甚至

$ echo ${(u)array}
1 2 3

引用自:https://unix.stackexchange.com/questions/167148