替换RegEx匹配

时间:2011-08-25 10:59:01

标签: bash unix shell

我有一个这样的字符串:'MDP_44' => 'sdDSD4343khjkjhkjhjk',

我想运行一个只返回MDP_44

的函数

我尝试过这样的事情:

$ variable=     'MDP_44' => 'sdDSD4343khjkjhkjhjk',
$ echo ${var1//[^A-Z]}     // MDPDSD

但结果并不好。

有人可以帮助我获得MDP_44的结果吗?非常感谢提前。

5 个答案:

答案 0 :(得分:1)

var="'MDP_44' => 'sdDSD4343khjkjhkjhjk',"
echo $var | cut -d= -f1 | sed "s/'//g"

修改

甚至更短

echo $var | cut -d\' -f2

答案 1 :(得分:1)

如果你的变量是:

variable="'MDP_44' => 'sdDSD4343khjkjhkjhjk',"

然后你可以使用bash 扩展模式匹配

echo ${variable//?(\'| =>*)}

请注意,您需要按shopt -s extglob启用extglob,默认情况下在交互模式下启用它。

答案 2 :(得分:0)

这将在' ... '

中提取第一件事
echo "$variable" | cut -d\' -f2

答案 3 :(得分:0)

尝试从=>开始删除所有内容

echo "${variable%%=>*}"

答案 4 :(得分:0)

使用bash正则表达式查找第一组单引号之间的文本。

if [[ "$variable" =~ [\']([^\']+) ]]; then match=${BASH_REMATCH[1]}; fi