Как получить размеры из строки URL, используя bash - PullRequest
1 голос
/ 06 июня 2019

Я использую bash на Mac, и у меня есть строка URL, которую я хочу извлечь из значений ширины и высоты из URL, содержащего размеры, подобные любому из приведенного ниже:

url=domain.com/project/asset_300x250_july2/
url=domain.com/project/300x250_asset_july2/
url=domain.com/project/asset_300x250/

Мне кажется, мне нужно найтивхождения чисел перед «х», а затем чисел после «х».Есть ли простой способ получить это?Нечто похожее на это, который извлекает только все числа:

width="${url//[!0-9]/}"

1 Ответ

2 голосов
/ 06 июня 2019

Вы определяете регулярное выражение для такой задачи.Предполагая, что ваши измерения соответствуют синтаксису, как в вопросе [0-9]x[0-9], вы можете сделать что-то вроде ниже.

Поддержка регулярных выражений в bash позволяет сопоставлять и захватывать строки, которые будут заполнены в массиве BASH_REMATCH.Индекс совпадающих элементов начинается с 1

Надлежащий сценарий может быть написан подробно, как показано ниже.

#!/usr/bin/env bash

regex='([[:digit:]]{1,})x([[:digit:]]{1,}).*$'

if [[ $url =~ $regex ]]; then
    printf '%s x %s\n' "${BASH_REMATCH[1]}" "${BASH_REMATCH[2]}"
fi

Дружественная для командной строки версия будет делать

[[ $url =~ $regex ]] && { width="${BASH_REMATCH[1]}"; height="${BASH_REMATCH[2]}" ; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...