Фильтровать элементы из массива на основе ввода с подстановочным знаком

Не стоит ли вам рассмотреть DNSSEC и другой преобразователь DNS? Вы можете получить список отсюда: https://duckduckgo.com/?q=Public+DNS+Servers&t=ffsb&ia=answer&iax=1

6
08.12.2016, 00:39
2 ответа

Это проще с zsh :

$ array=(saf sri trip tata strokes)
$ pattern='*tr*'
$ printf '%s\n' ${(M)array:#$~pattern}
trip
strokes
  • $ {array: #pattern} : расширяется до элементов массива, которые не соответствуют шаблону.
  • (M) (для соответствия): возвращает значение оператора : # , чтобы развернуть его до соответствующих элементов.
  • $ ~ pattern , вызывает содержимое $ pattern , который следует использовать в качестве шаблона.
8
27.01.2020, 20:22

Один из способов сделать это:

array=(saf sri trip tata strokes)                      
input=*tr*
for foo in "${array[@]}"; do
    case "$foo" in
        $input) printf '%s\n' "$foo" ;;
    esac
done

Примечание для чрезмерно восторженных цитат: правая часть в назначениях (например, * tr * в input = * tr * ) не требует цитирования.

6
27.01.2020, 20:22

Теги

Похожие вопросы