我有一个这样的字符串:'MDP_44' => 'sdDSD4343khjkjhkjhjk',
我想运行一个只返回MDP_44
。
我尝试过这样的事情:
$ variable= 'MDP_44' => 'sdDSD4343khjkjhkjhjk',
$ echo ${var1//[^A-Z]} // MDPDSD
但结果并不好。
有人可以帮助我获得MDP_44
的结果吗?非常感谢提前。
答案 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