numbers=(1 2 3 4 5)
#bash has no filter: a loop keeps the elements that pass the test
odd=()
for number in "${numbers[@]}"; do
if ((number % 2 == 1)); then
odd+=("$number")
fi
done
#odd is (1 3 5)
#awk filters lines by a condition: here the even ones
mapfile -t evens < <(printf '%s\n' "${numbers[@]}" | awk '$1 % 2 == 0')
#evens is (2 4)
echo "odd is (${odd[*]})"
echo "evens is (${evens[*]})"