İki diziler, demek ettik:Bash'te iki dizinin birleşimini nasıl alabiliriz?
arr1=("one" "two" "three")
arr2=("two" "four" "six")
Ne Bash bu iki dizinin birliği almanın en iyi yolu olurdu?
İki diziler, demek ettik:Bash'te iki dizinin birleşimini nasıl alabiliriz?
arr1=("one" "two" "three")
arr2=("two" "four" "six")
Ne Bash bu iki dizinin birliği almanın en iyi yolu olurdu?
Birincisi, kombine diziler:
arr3=("${arr1[@]}" "${arr2[@]}")
Sonra onları tekilleştirme için this görevinden çözümü uygulayın:
# 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[@]}")
Bu bash 4+ varsayar.
'arr3' gerek yok:" $ {arr1 [@]} "" $ {arr2 [@]} "' da k için 'yi kullan –
öncesinde bash
4,
while read -r; do
arr+=("$REPLY")
done < <(printf '%s\n' "${arr1[@]}" "${arr2[@]}" | sort -u)
sort -u
, girişinde bir DUP içermeyen birlik gerçekleştirir; while
döngü, her şeyi bir diziye geri koyar.
Gerçek birleştirme (dupes olmadan) veya basitçe her iki dizinin birleştirilmesi? –
Gerçek sendika (çift kopyalar olmadan) – user2436428
zsh'de, 'r türünde -U arr 'kullanabilirsiniz, oldukça bash içinde kolay bir yol olmadığından emin olabilirsiniz. – Kevin