使用shell中的模式匹配进行解析

时间:2014-11-25 06:49:37

标签: shell pattern-matching

我正在尝试使用reqex,模式匹配,将此字符串拆分为单独的变量 abc12c20m 。其中:

var1=abc
var2=12
var3=20

exp abc2c5m 的主字符串可能不同,但 abc 部分始终相同且 c m 总是在字符串中。一个解决方案必须适用于 abc12c20m abc2c5m

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以使用BASH正则表达式:

s='abc12c20m'
if [[ "$s" =~ ^(abc)([0-9]+)c([0-9]+)m$ ]]; then 
    var1=${BASH_REMATCH[1]}
    var2=${BASH_REMATCH[2]}
    var3=${BASH_REMATCH[3]}
fi

echo "$var1 - $var2 - $var3"
abc - 12 - 20