String
如何從bash中的字元串/數組創建唯一元素數組?
如果我有一個字元串 “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