section="SEE ALSO"
regex=$(sed 's/./&.*/g' <<<"$section") # S.*E.*E.* .*A.*L.*S.*O.*
# then
some help command | sed -n '/^'"$regex"'/,/^[^[:blank:]]/ p' | sed '$d'
Как функция bash:
man_section() {
local section=$1
local regex=$(sed 's/./&.*/g' <<<"$section")
sed -n '/^'"$regex"'/,/^[^[:blank:]]/ p' | sed '$d'
}
some help command | man_section "SEE ALSO"
Как насчет
for FN in ${first_list[@]}; do [[ ${second_list[@]} =~ $FN ]] && third_list+=($FN); done
Использование ассоциативного массива в качестве помощника для отслеживания элементов в одном списке (в качестве ключей ), а затем быстрая проверка элементов другого списка по этим:
#!/bin/bash
list1=( 1 3 5 6 7 8 bumble bee )
list2=( 2 4 4 4 6 7 8 bee beer )
declare -A seen
for item in "${list1[@]}"; do
seen[$item]=1
done
for item in "${list2[@]}"; do
if [ -n "${seen[$item]}" ]; then
intersection+=( "$item" )
fi
done
echo 'Intersection:'
printf '\t%s\n' "${intersection[@]}"
При этом используются точные совпадения строк для сравнения элементов между двумя списками.
Результат:
Intersection:
6
7
8
bee