2014-11-25 56 views
1

我想使用reqex,模式匹配,這個字符串中不同的變量分裂匹配,abc12c20m。其中:解析使用模式在外殼

var1=abc 
var2=12 
var3=20 

主串可以爲EXP abc2c5m不同,但ABC部分始終是相同的和Ç總是的字符串中。一種解決方案必須努力都abc12c20mabc2c5m

任何幫助將不勝感激。

回答

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 
+0

你可能不使用bash。確保使用bash進行解析。 – anubhava 2014-11-25 07:16:59

+0

./arry_test.sh:線42:意外的標記( './arry_test.sh:線42:鄰近^(一個語法錯誤' ./arry_test.sh:在條件表達式語法錯誤線42:'如果[[「 $ S」 =〜^(ABC)([0-9] +)C([0-9] +)M $]];然後「 – fali 2014-11-25 07:18:31

+0

而如果爲 」abc「 的部分變爲 」CBA「 – fali 2014-11-25 07:19:10