在bash中,假设我有一个字符串strname
:
strname="ph7go04325r"
我想提取第一个 "3"
字符和最后一个 字符之间的"r"
字符strname
,并将结果保存在字符串中strresult
。在上面的示例中,结果strresult
将是:
strresult="25"
第一"3"
字符是不必然在串8位strname
; 同样地,最后一个"r"
是不必然在串位置11。因此,下面的两个串的strname
应产生strresult="25"
:
strname="ph11go04325raa"
strname="325r"
strname="rgo04325raa"
另外,strname=ph12go04330raa"
应屈服strresult="30"
。
我是bash脚本的新手,而且我不知道从哪里开始进行这样的字符串模式匹配。你有什么建议吗?
您可以在bash(3.0或更高版本)中使用正则表达式来完成此操作:
if [[ $strname =~ 3(.+)r ]]; then
strresult=${BASH_REMATCH[1]}
else
echo "unable to parse string $strname"
fi
在bash中,来自正则表达式的捕获组被放置在特殊数组中BASH_REMATCH
。元素0包含整个匹配项,元素1包含第一个捕获组的匹配项。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句