Ich habe zwei Arrays, sagen:Wie können wir die Vereinigung von zwei Arrays in Bash bekommen?
arr1=("one" "two" "three")
arr2=("two" "four" "six")
Was ist der beste Weg wäre, Vereinigung dieser beiden Arrays in Bash zu bekommen?
Ich habe zwei Arrays, sagen:Wie können wir die Vereinigung von zwei Arrays in Bash bekommen?
arr1=("one" "two" "three")
arr2=("two" "four" "six")
Was ist der beste Weg wäre, Vereinigung dieser beiden Arrays in Bash zu bekommen?
Zuerst kombinieren die Arrays:
arr3=("${arr1[@]}" "${arr2[@]}")
Dann wenden Sie die Lösung von this Beitrag sie dedupliziert:
# Declare an associative array
declare -A arr4
# Store the values of arr3 in arr4 as keys.
for k in "${arr3[@]}"; do arr4["$k"]=1; done
# Extract the keys.
arr5=("${!arr4[@]}")
Dies setzt voraus, bash 4+.
Keine Notwendigkeit für 'arr3': Verwenden Sie einfach' für k in "$ {arr1 [@]}" "$ {arr2 [@]}" ' –
Vor bash
4,
while read -r; do
arr+=("$REPLY")
done < <(printf '%s\n' "${arr1[@]}" "${arr2[@]}" | sort -u)
sort -u
führt eine dup freie Vereinigung an ihrem Eingang; Die while
Schleife legt alles einfach in ein Array zurück.
Aktuelle Union (ohne Dupes) oder einfach beide Arrays verkettet? –
Aktuelle Union (ohne Duplikate) – user2436428
In zsh können Sie einfach 'typeset -U arr' verwenden, ziemlich sicher, dass es nicht so einfach in Bash ist. – Kevin