如何使用bash从URL字符串获取尺寸

时间:2019-06-06 11:13:16

标签: bash macos

我在Mac上使用bash,并且有一个URL字符串,我想从包含以下任何尺寸的URL中提取宽度和高度值:

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

我认为我需要搜索出现在“ x”之前的数字,然后搜索出现在“ x”之后的数字。有一个简单的方法来做到这一点吗?与此类似,仅提取所有数字:

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

1 个答案:

答案 0 :(得分:2)

您为此类任务定义一个正则表达式。假设尺寸遵循问题[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]}" ; }